使用场景:Android 系统预置apk无法打开
简单总结:脚本预置进android设备指定目录,预置方式还是通过device.mk ; 目标apk存放至代码随意目录下;执行脚本(此部分由init.r获取对脚本的读写权限)
-
目标apk存放
以上Android.mk 中的mkdir指令,作用是为了编译系统能够找到源代码中微信apk的存放路径
-
脚本预置 //将预置apk的脚本预置进android设备指定目录
-
init.rc 开启脚本执行开机即执行权限/同时可能会涉及Selinux权限,对应添加即可
注意事项:
(1.)编译前删除out下所以微信apk对应的目录
(2.)确认设备上指定路径下已经存在微信apk和安装apk的脚本文件
(3.)确认脚本文件的格式是否正确,可执行脚本(最好绝对路径执行);若脚本存在但无法执行,大概率是脚本格式的问题
(4.) 确认脚本可以执行后,设备上目标apk的图标稍等会儿即出现,若一直未安装成功,则使用指令,抓取se权限,并根据规则添加权限;指令:adb shell "cat /proc/kmsg |grep avc" >D:/log/avc_llog.txt //此调试指令需root权限
备注:安装apk脚本文件:
pre_install.sh:
#!system/bin/sh
if [ -f /data/etc/preinstall ]; then
echo "preinstall already set"
else
mkdir /data/etc
chmod 0777 /data/etc
touch /data/etc/preinstall
chmod 0777 /data/etc/preinstall
pm install /vendor/app/WeiXin.apk
echo "install ok"
fi