Android-如何预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复?

方案:

第一步:把apk编译到/system/preloadapp/

第二步:在系统启动时将其安装到/data/app/

第三步:配置各种相关权限

---------------------------------------------------------------------------------

详解:

【编译】创建preloadapp目录:

  |----Android.mk          #Makefile

  |----preloadapp.sh      #安装脚本

  |----HelloWorld.apk  #要预置的Apk.

Android.mk:

LOCAL_PATH := $(call my-dir)

#preloadapp.sh
just_copy_to:=$(PRODUCT_OUT)/system/bin/
just_copy_from:=$(LOCAL_PATH)/preloadapp.sh
$(shell mkdir -p $(just_copy_to))
$(shell cp $(just_copy_from) $(just_copy_to))

#HelloWorld.apk
include $(CLEAR_VARS)
LOCAL_MODULE := HelloWrold.apk
LOCAL_MODULE_TAGS := optional userdebug
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_PATH := $(TARGET_OUT)/preloadapp
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)

做了两件事:1.把当前目录的preloadapp.sh拷贝到/system/bin/

            2.把当前目录所有的apk拷贝到/system/preloadapp/

    (preloadapp.sh负责在首次启动时把/system/preloadapp/下的apk拷贝到/data/app/)

preloadapp.sh:

#!/system/bin/sh


PATH=/sbin:/system/sbin:/system/bin:/system/xbin
export PATH


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 -p ${PRELOAD_SOURCE}/* ${PRELOAD_DEST}/
	echo "abcd" > ${PRELOAD_FLAG}
fi

【安装】boot完成后拷贝:

在system/ore/rootdir/****/init.rc中增加以下内容:

service preloadapp system/bin/preloadapp.sh
   class main
   user system
   group system
   oneshot


on property:sys.boot_completed=1
   chown system shell /system/bin/preloadapp.sh
   chmod 0500 /system/bin/preloadapp.sh
   chown system system /system/preloadapp/* 
   chmod 0701 system /system/preloadapp/* 
   start preloadapp

【权限】

增加external/sepolicy/preloadapp.te:

# preloadapp - service
type preloadapp, domain;
type preloadapp_exec, exec_type, file_type;

init_daemon_domain(preloadapp)

allow preloadapp app_data_file:file { read write create getattr };

在external/sepolicy/service_contexts中添加:

/system/bin/preloadapp.sh                 u:object_r:preloadapp_exec:s0


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值