嵌入式开发记录-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

  在源码中创建一个广播接收者,接收启动的消息,然后就可以启动了

 

posted @ 2020-10-09 23:44  笑不出花的旦旦  阅读(289)  评论(0)    收藏  举报