全志平台不打包data分区,但是有些应用必须放在data分区才能正常使用,放system/app下面安装后运行会因为缺少lib库而退出,system/app和data/app(pm) 安装方式不一样。网上找了些资料,最终使用preinstall的方式实现。
1 首先,修改初始化脚本init.rc, 启动preinstall.sh脚本,判断及拷贝相应的文件。一般厂商可以配置额外的初始化设置置,例如init.sun7i.rc。
service preinstall /sbin/busybox sh /system/bin/preinstall.sh
user root
group root
disabled
oneshot
on property:sys.boot_completed=1
start preinstall
2 preinstall.sh会被拷贝到system/bin/下面,修改如下:
PKGS=/system/preinstall/
#判断文件是否存在
if [! -e $MARK ];then
echo "cp daohang to data"
apk_list=$(busybox find $PKGS -name
"*\.apk"
)
echo $apk_list
for
apk in $apk_list
do
echo
"install: "
$apk
mkdir -p /data/app
cp -f $apk /data/app/app_to_install.apk
chmod
644
/data/app/app_to_install.apk
/system/bin/pm install -r /data/app/app_to_install.apk
rm /data/app/app_to_install.apk
done
3 预置文件到system/preinstall/, 修改prebuild/preinstall/android.mk
LOCAL_PATH := $(call my-dir)
########################################
include $(CLEAR_VARS)
LOCAL_MODULE := flashplayer
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_MODULE_PATH := $(TARGET_OUT)/preinstall
LOCAL_MODULE_CLASS := APPS
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
include $(BUILD_PREBUILT)
#######################################
这样基本上就可以了。
参考:http://www.2cto.com/kf/201505/402769.html