android preinstall 预置应用及资源

本文介绍了在全志平台不打包data分区的情况下,如何通过预安装(preinstall)方式确保应用正常运行。主要步骤包括修改初始化脚本init.rc以启动preinstall.sh,以及在android.mk中配置预置文件到system/preinstall/目录下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

全志平台不打包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/下面,修改如下:

 

MARK=/data/app/*

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

fi

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值