Android系统量产版本编译都是user版本或者叫release版本,放在system/app目录下的apk是不允许终端用户手动删除的。
要实现能够让手动删除,下面讨论一种方法就是先将预备安装的应用放/system目录下某一个目录中如preloadapp目录,
在首次开机的时候执行一个脚本如preloadapp.sh将该目录的应用拷贝到data/app目录即可
将要预安装的apk放入system/preloadapp目录,第一次开机的时候执行preloadapp.sh脚本
将preloadapp目录的apk拷贝到data/app目录中,然后再开始安装apk,这样安装的apk就能够被手动删除,恢复出厂设置
删除data/app目录的apk,而system/preloadapp目录的apk可以保留。
缺点:同一个apk占用系统两份空间,system/preloadapp 和data/app
要实现能够让手动删除,下面讨论一种方法就是先将预备安装的应用放/system目录下某一个目录中如preloadapp目录,
在首次开机的时候执行一个脚本如preloadapp.sh将该目录的应用拷贝到data/app目录即可
将要预安装的apk放入system/preloadapp目录,第一次开机的时候执行preloadapp.sh脚本
将preloadapp目录的apk拷贝到data/app目录中,然后再开始安装apk,这样安装的apk就能够被手动删除,恢复出厂设置
删除data/app目录的apk,而system/preloadapp目录的apk可以保留。
缺点:同一个apk占用系统两份空间,system/preloadapp 和data/app
1>preload脚本
- =========================================================================
- #!/system/xbin/busybox sh
- PRELOAD_DEST=/data/app
- PRELOAD_FLAG=${PRELOAD_DEST}/.preloadapp
- PRELOAD_SOURCE=/system/preloadapp
-
- if [ ! -d ${PRELOAD_DEST} ]
- then
- mkdir -p ${PRELOAD_DEST}
- fi
-
- if [ ! -f ${PRELOAD_FLAG} ]
- then
- cp -f ${PRELOAD_SOURCE}/* ${PRELOAD_DEST}
- echo "abcd" > ${PRELOAD_FLAG}
- fi
- =========================================================================
2>首次开机的时候执行脚本
- device/xxx/xxxx/init.xxxx.rc中增加如下代码,让android系统启动的时候执行preloadapp.sh脚本
- =========================================================================
- service preloadapp /system/bin/logwrapper /system/xbin/preloadapp.sh
- user system
- class main
- disabled
- oneshot
- =========================================================================