嵌入式开发记录-day48 开机自启动APP
1、自启动APP分两种情况:有源码APP和没有源码的APP
2、没有源码的APP启动:
系统开机就要启动一个应用,那么可以在Android启动的时候,我们可以挂在一个服务,在该服务中使用脚本,来启动一个APP;
3、如何获取应用的包名称:
使用脚本启动应用,需要提前知道该软件对应的包名称;
那么可以查看Android的启动日志,获取相关的包名称;
4、使用adb安装应用
// 启动安卓,在cmd中输入,安装应用软件 adb install com.sogou.map.android.sogounav_25666eb1.apk
5、抓取包名称
// 先按下回车,等待APP安全启动,在停止启动日志输出按ctrl+c adb logcat -v time>E:\logcat.txt // 完成后,打开日志,搜索start关键字,查找与启动APP相关的信息 START {act=android.intent.action.PICK dat= typ=vnd.android.cursor.dir/playlist flg=0x4000000 cmp=com.android.music/.PlaylistBrowserActivity (has extras)} from pid 2151 // 其中com.android.music/.PlaylistBrowserActivity 是包名称 // 可以在超级终端中使用命令验证,验证前退出APP am start -n com.android.music/.PlaylistBrowserActivity
6、增加启动脚本
打开启动脚本
vi system/core/rootdir/init.rc
在文件末尾增加以下代码
service start_test /system/bin/test.sh //声明并描述一个服务 class main //属于 main 类 user root //使用root用户执行 group root //所在组为 root oneshot //只执行一次 on property:sys.boot_completed=1 //在开机完全启动时启动该服务 write /dev/ttySAC2 "test start_test\n" //在串口打印,测试是否成功加入该服务 start start_test
增加脚本文件,进入到下列文件夹 device/samsung/common ,创建名为test.sh 的文件
#!/system/bin/sh sleep 5 // 延时5s,确保应用可以启动 am start -n com.android.music/.MusicBrowserActivity // 启动应用
修改test.sh文件权限 chmod 777 test.sh
在源码device/samsung/smdk4x12 下面,打开 device.mk 文件,在 110 行左右添加如 下代码
PRODUCT_COPY_FILES += \
device/samsung/common/test.sh:system/bin/test.sh // 将脚本文件复制到system/bin下面
7、编译镜像
1、需要将Android4.4的源码和系统源码放在同一级目录下解压;
2、虚拟机需要的运行内存4G以上,没存空间60G以上;
3、编译安卓之前需要先编译内核源码 make zImage;
4、更新下javap环境
update-alternatives --install "/usr/bin/javap" "javap" "/usr/lib/jvm/jdk1.6.0_43/bin/javap" 1
5、再编译系统;
6、编译安卓比较耗费时间,几个小时吧;
7、完成后需要烧写ramdisk-uboot.img和system.img
8、启动有源码的APP
在源码中创建一个广播接收者,接收启动的消息,然后就可以启动了

浙公网安备 33010602011771号