方案:

第一步:把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/shPATH=/sbin:/system/sbin:/system/bin:/system/xbin
export PATHPRELOAD_DEST=/data/app
PRELOAD_FLAG=${PRELOAD_DEST}/preloadapp
PRELOAD_SOURCE=/system/preloadappif [ ! -d ${PRELOAD_DEST} ]; thenmkdir -p ${PRELOAD_DEST}
fiif [ ! -f ${PRELOAD_FLAG} ]; thencp -f -p ${PRELOAD_SOURCE}/* ${PRELOAD_DEST}/echo "abcd" > ${PRELOAD_FLAG}
fi

【安装】boot完成后拷贝:

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

service preloadapp system/bin/preloadapp.shclass mainuser systemgroup systemoneshoton property:sys.boot_completed=1chown system shell /system/bin/preloadapp.shchmod 0500 /system/bin/preloadapp.shchown 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

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

  1. 恢复出厂设置android手机号码,手机怎么恢复出厂设置 安卓手机恢复出厂设置方法汇总...

    最近接连有不少身边的朋友遇到一些比较奇怪的智能手机问题,比如最开始有朋友无意间设置了图案锁屏保护密码,但之后却不记得自设置的图案密码,导致连续五次解锁失败,手机直接成为了锁定状态,需要注册的谷歌账号密 ...

  2. android恢复出厂设置广播,如何恢复出厂设置您的Android TV | MOS86

    在每个用户的生活中都需要重新设置恢复出厂默认值的时间.也许这个设备是表现的不错,需要一个新的开始,你正在摆脱它,或者你想要一个干净的slate为其他原因.好消息是,无论制造商如何,出厂初始化您的And ...

  3. android刷机恢复出厂设置吗,手机恢复出厂设置和刷机有什么区别?

    原标题:手机恢复出厂设置和刷机有什么区别? 很多人在使用手机的过程中都会遇到手机使用一段时间就会卡顿的问题,这时候或许身边总会有几个朋友会给你建议,"手机刷机一下就变流畅了"或者& ...

  4. Android: android 如何预置APK

    转自:http://blog.csdn.net/sergeycao/article/details/8198205 一.如何将带源码的APK预置进系统? 1) 在 packages/apps 下面以需 ...

  5. android恢复出厂设置的源码解析

    对于回复出厂设置,应用层能做的就是发一个广播或者直接调用RecoverySystem的一个方法,剩下的都是系统完成的.通过发广播的方式最终也是调用RecoverySystem的方法来回复出厂设置,这里 ...

  6. android手机备份恢复出厂设置密码,手机恢复出厂设置 如何让安卓手机恢复出厂设置经验分享...

    最近接连有不少身边的朋友遇到一些比较奇怪的智能手机问题,比如最开始有朋友无意间设置了图案锁屏保护密码,但之后却不记得自设置的图案密码,导致连续五次解锁失败,手机直接成为了锁定状态,需要注册的谷歌账号密 ...

  7. android 恢复出厂设置流程分析,基于Android系统快速恢复出厂设置方法实现.doc

    基于Android系统快速恢复出厂设置方法实现 基于Android系统快速恢复出厂设置方法实现 摘 要:针对使用Android系统的智能电视进行恢复出厂设置时重置速度慢的情况进行了研究和分析,从其重置 ...

  8. Android源码笔记--恢复出厂设置

    最近在学习Android系统源码,这一节主要是了解恢复出厂设置.实现恢复出厂一般是通过发广播操作,如下: //恢复出厂设置 Intent recovery = new Intent("and ...

  9. android 恢复出厂 自动恢复文件夹,Android恢复出厂设置

    恢复出厂设置核心代码:sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR")); 即发送一个广播,需要在And ...

最新文章

  1. Android 使用 ActivityResult 处理 Activity 之间的数据通信及调起拍照实例
  2. 电子火折子的原理,了解一下?
  3. 停止linux下正在执行的ping命令
  4. 马哥2016全新Linux+Python高端运维班第七周作业
  5. @mapperscan注解_Spring的@Import注解详解
  6. NBT | 微生物研究所王军组在AI赋能挖掘微生物组功能多肽方面获得新进展
  7. 问题三十六:ray tracing中的Inverse Mapping(3)——圆盘Inverse Mapping
  8. BZOJ4552: [Tjoi2016Heoi2016]排序
  9. Mule ESB File Connector轮询单个文件的实现(3)
  10. html编写在线打字通,HTML5代码打字练习、HTML5案例 - 02
  11. web多媒体标签,表格标签,超链接标签,语义化标签练习
  12. ASF文件格式详解(1)
  13. 七、手把手教你搭建SpringCloudAlibaba之Sentinel实现流量控制
  14. 基于vue2全家桶实现的,仿移动端QQ
  15. canvas教程17-合成
  16. 解决JupyterLab或者Jupyter Notebook无法跳转到浏览器的问题
  17. 基于QT的游戏修改器
  18. okhttp的视频下载
  19. org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction
  20. C++使用Clipper库

热门文章

  1. YesApi-超强的API接口开发神器
  2. SOME/IP TP
  3. file.delete() 删除失败
  4. 基于FPGA的视频接口之SDI解码
  5. Matplotlib柱状图、饼状图
  6. 计算机与控制学院魏玮,迟浩坤
  7. 【FinE】蒙特卡洛模拟(1)
  8. 操作系统实验 作业调度算法 先来先服务FCFS调度算法
  9. ambari配置ranger
  10. 全千兆以太网 应用尚待时日