Android5.1去掉彩蛋
背景
Platform: IMX6Q
OS: Android5.1
Kernel: 3.14.52
android彩蛋:点击Setting->关于->Android版本多次会出现Android彩蛋
处理相关处理代买在packages\apps\Settings\src\com\android\settings\DeviceInfoSettings.java定位函数在
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference)
屏蔽掉里面处理Android版本点击的代码
Android5.1第三方APP对SD卡没有写权限
背景
Platform: IMX6Q
OS: Android5.1
Kernel: 3.14.52
android5.1第三方APP对SD卡没有写权限:http://blog.csdn.net/peng_cao/article/details/50508700在Android kk版本之后(4.4, 5.0, 5.1, 6.0…);一般的应用程序(APP)是无法访问(读/写)外置SD卡的;仅仅只有系统级别的并且使用系统签名的APP可以访问外置SD卡在AndroidManifest.xml中添加android.permission.WRITE_MEDIA_STORAGE在Android.mk中添加LOCAL_CERTIFICATE := platform不要在AndroidManifest.xml中添加share System UID 添加android.sharedUserId="android.uid.system"第三方APP只能访问外置SD卡的应用程序目录,例如:*Android/data/com.example.foo/系统APP只有使用了系统签名(pla ...
Android5.1支持多个U盘挂载
背景
Platform: IMX6Q
OS: Android5.1
Kernel: 3.14.52
Android5.1支持多个U盘挂载:
device/xx/init.rc, 增加挂载点文件夹 mkdir /mnt/media_rw/udisk1 0755 system system
symlink /mnt/media_rw/udisk1 /storage/udisk1
mkdir /mnt/media_rw/udisk2 0755 system system
symlink /mnt/media_rw/udisk2 /storage/udisk2
device/xx/overlay/frameworks/base/core/res/res/xml/storage_list.xml,增加storage元素: <storage android:mountPoint="/storage/udisk1"
android: ...
Android5.1去掉锁屏
背景
Platform: IMX6Q
OS: Android5.1
Kernel: 3.14.52
修改默认锁屏修改设置里面的默认参数路径:frameworks\base\packages\SettingsProvider\res\values\defaults.xmldef_lockscreen_disabled 改为 true<bool name="def_lockscreen_disabled">true</bool>
rm out/target/product/xxx/system/framework/framework.jar
rm out/target/product/xxx/system/priv-app/SettingsProvider/SettingsProvider.apk
修改完重新编译mm ,再恢复出厂设置或者重新编译源码
如果不起效果,可以在mk文件(最好的在device/xxx下面)加 ...
嵌入式Web服务器
Boa:编译修改Makefile里的CC等cp mime.types到/etcboa.conf到/etc/boa/boa.conf
下载源码:安装额外的编译工具:apt-get install flex byacc生成Makefile: ./configure –host=arm-linux修改Makefile的编译链:CC和CPP
util.c: In function 'get_commonlog_time':
util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token
make: *** [util.o] Error 1
解决方法:
修改compat.h文件
将下面一行(大概是120行)
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
改为:
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
配置修改boa.con ...
嵌入式Linux基础开发环境搭建
主机环境开发主机环境:Ubuntu16.04
samba:
安装服务:sudo apt-get install samba
配置:sudo vi /etc/samba/smb.conf在最后添加:
#[共享名称] 远程网络看到的共享名称
[share]
#comment 注释信息
comment = samba
#path 所共享的目录路径
path = /home/xxx
#public 能否被guest访问的共享,默认no,和guest ok 类似
public = yes
#writable 可以被所有用户读写,默认为no
writeable = yes
#browsable 是否允许所有用户浏览此共享,默认为yes,no为隐藏
browseable = yes
#read only=no 和writable=yes等价,如与以上设置冲突,放在 后面的设置生效,默认只读
read only = no
#write list 三种形式:用户,@组名,+组名,用,分隔 如wri ...
Win10下dlib及face_recognition的安装
背景因项目需要在PC预处理一些人脸照片,所以就想用便捷的face_recognition来处理,后面安装face_recognition还是挺麻烦的,特别在win下面,特此记录一下
Win10下的安装步骤如果要使用新版的Dlib库,需要自己编译,官方只提供了源码
通过Anaconda方式:
Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个常用的科学包及其依赖项
安装Anaconda3:直接去官网下载对应的版本即可,我用的是Anaconda3-2019.03-Windows-x86_64
在Anaconda Prompt中安装dlib:conda install -c conda-forge dlib
测试dlib是否安装成功:>>> import dlib
>>> dlib.get_frontal_face_detector()
<dlib.dlib.fhog_object_detector object at 0x00000289F92318A0>
#说明可以在(Anaconda 环境下)使用dlib
但此时如果使用pip ...
Android签名
Android签名目的:
纯软件公司relsase自己的apk产品前,会使用自己的公钥向CA申请数字证书,之后使用该数字证书迭代自己的产品。以保证软件产品的安全性。
平台厂商预装apk一般需要使用签名工具和系统签名文件(在$(android_src)/build/target/product/security/目录下),对预装apk进行签名,一方面保证之后这部分软件升级中证书的一致性;另一方面有些应用需要获取系统权限,签名应与系统一致。
https://blog.csdn.net/u012041204/article/details/73823606
Android系统默认的四种签名类型
testkey:普通APK,默认情况下使用。
platform:该APK完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system。
shared:该APK需要和home/contacts进程共享数据。
media:该APK是media/download系统中的一环。应用程序的Android.mk中有一个LOCAL_CERTIFICATE字段 ...
android开机自启动及系统APK
背景项目apk需要在升级之后自启动(新安装从未启动过),设备由UPS供电但从Android3.1开始,新安装从未启动过的app不能收到系统广播(启动完成,网络状态变化等)
解决方案:将app做成系统应用系统APK可以正常接收系统广播怎么将app做成系统应用?:
加入到Android源码编译 解压apk文件得到lib,将编译好的apk(xxx.apk)放到系统源码的packages/apps/xxx(xxx为自己创建)中,解压得到的lib文件夹也放到xxx文件夹中(没有源码) 添加Android.mk文件: include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := Test
LOCAL_MODULE_TAGS := optional //不管是user 还是eng 版本都会编译此app
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS : ...
MIPI-LCD调试
LCD及DSI一些基本概念
水平消隐(HBlank):电子枪从左到右画出象素,它每次只能画一条扫描线,画下一条之前要先回到左边并做好画下一条扫描线的准备,这之间有一段时间叫做水平消隐。
垂直消隐(VBlank):在画完全部256条扫描线之后它又回到屏幕左上角准备下一次画屏幕(帧),这之间的一段时间就是垂直消隐。电子枪就是在不断的走‘之’字形。
行同步(HSYNC):行同步就是让电子枪控制器知道下面要开始新的一行像素
场同步(VSYNC:场同步就是告诉电子枪控制器下面要开始新的画面
数据使能(DE):在数据使能区是有效的色彩数据,不在使能范围内的都显示黑色。
前肩(Front Porch)/后肩 (Back Porch):行同步或场同步信号发出后,视频数据不能立即使能,要留出电子枪回扫的时间。以行扫描为例,从HSYNC结束到DE开始的区间成为行扫描的后肩(绿色区域),从DE结束到HSYNC开始称为前肩(紫色区域)。同样对于场扫面也可以由类似的定义
像素时钟(Pixel clock)
带宽
H-total = HorizontalActive + HorizontalFrontPorc ...
UVC相关
参考:The Linux USB Video Class (UVC) driverlibrary and sample to access to UVC web camera on non-rooted Android device
《Universal Serial Bus Device Class Definition for Video Devices: H.264 Payload》
Gstreamer测试UVC设备为 /dev/video1
gst-launch-1.0 --gst-debug-level=3 imxv4l2src device=/dev/video1 ! video/x-raw,format=YUY2,width=640,height=480,framerate=15/1 ! imxvideoconvert_g2d ! imxvideoconvert_ipu ! vpuenc_h264 ! rtph264pay pt=102 ! application/x-rtp ! udpsink host=192.168.1.13 port=5004
gst-la ...
Buildroot相关
配置外部编译器make menuconfig
Target options --->
Target Architecture (ARM (little endian)) --->
Target Architecture Variant (cortex-A7) --->
Target ABI (EABI) --->
Floating point strategy (Soft float) --->
Toolchain --->
Toolchain type (External toolchain) --->
Toolchain (Custom toolchain) --->
Toolchain origin (Pre- ...