首页/新闻资讯/正文详情

RK3576-Android15-实现开机脚本静默安装功能

发布时间:2026/9/23 22:04:32 来源:云帆数科 栏目:资讯中心
RK3576-Android15-实现开机脚本静默安装功能
RK3576-Android15-实现开机脚本静默安装功能文章目录前言一、涉及到知识点二、参考资料三、修改文件四、实现方案1、拷贝apk 到指定目录/system/preloadapp 下配置系统编译环境(框架)-便于管理-确认 fise_preloadapp 的目录结构创建 fise_preloadapp/Android.mk创建 fise_preloadapp/fise_preloadapp.mkrk3576_u.mk 中引入 fise_preloadapp.mk2、拷贝批量安装脚本到指定目录/system/bin/3、批量安装脚本实现-并在开机后自动执行批量安装脚本批量安装脚本编写批量安装脚本-开机执行批量安装五、思考总结前言一般有两种情况需要用静默安装来实现系统内置应用开机后进入应用出现闪退的情况系统需要内置一些应用 可卸载的应用可以内置也可以开机后批量安装来实现其实就是需要系统来实现系统内置应用但是有时候内置会出现各种各种问题造成app 内置失败、内置成功了打开不可用。 那么就用静默安装 方案在开机后模拟adb install安装 或者模拟 系统pm install安装进去的方案。一、涉及到知识点拷贝apk 、拷贝脚本 到指定目录 拷贝相关知识点对于apk 这种特殊文件 采用 编译形式实现拷贝知识点对于开机自启脚本实现在init.rc中如何配置。批量安装脚本如何编写等权限问题不同的权限GMS/root/非root 方案权限不一样的批处理脚本实现方案也不一样保存是否已经安装成功的flag 方式 不一样总归权限问题。二、参考资料Android 10.0 静默安装脚本实现静默安装appMTK-Android12 静默安装脚本实现静默安装app开机内置拷贝二进制文件到/system/bin目录-并实现开机自启二进制脚本服务预制资源-拷贝文件-/system/lib/ 目录-拷贝可执行文件/system/bin/-拷贝文件到/system/etc/permissions目录系统拷贝预置资源-拷贝到/system/bin目录-拷贝可执行文件并启动-拷贝到product/etc分区-拷贝到system/etc分区如上这些知识点足以满足我们当前需求基本思路如下拷贝apk 到指定目录拷贝开机脚本到安卓系统/system/bin目录实现脚本开机自启进行批量安装apk 功能三、修改文件device\rockchip\rk3576\device.mk 设置属性是否已经安装 device\rockchip\common\fise_preloadapp\batch_install.sh 批量安装脚本 device\rockchip\common\device.mk 拷贝批量安装脚本到指定目录 system\core\rootdir\init.rc 配置开机启动后 启动批量安装脚本 rk3576_u\fise_preloadapp\Android.mk 配置编译环境当前目录及子目录被编译 rk3576_u\fise_preloadapp\fise_preloadapp.mk 配置当前目录下需要编译的模块 device\rockchip\rk3576\rk3576_u\fise_preloadapp\xiongmaohuihua\**.apk 配置子目录 需要安装的apk 文件 device\rockchip\rk3576\rk3576_u\fise_preloadapp\xiongmaohuihua\Android.mk 配置当前apk 拷贝脚本 device\rockchip\rk3576\rk3576_u\rk3576_u.mk 配置fise_preloadapp 到系统编译环境里面来让整个目录可以被编译到四、实现方案1、拷贝apk 到指定目录/system/preloadapp 下配置系统编译环境(框架)-便于管理-确认 fise_preloadapp 的目录结构device/rockchip/rk3576/rk3576_u/fise_preloadapp/├──Android.mk--新建内容只有递归扫描 ├── fise_preloadapp.mk--新建声明PRODUCT_PACKAGES└── xiongmaohuihua/--你的APK模块目录已存在 ├── xiongmaohuihua.mk └── xiongmaohuihua.apk创建 fise_preloadapp/Android.mk内容与preinstall_del/Android.mk保持一致 就是参考写法include $(call all-subdir-makefiles)创建 fise_preloadapp/fise_preloadapp.mk内容仿照preinstall.mk 其实还是仿照其它模块怎么写脚本的PRODUCT_PACKAGESxiongmaohuihua如果有多个 APK按同样格式依次添加PRODUCT_PACKAGES\ xiongmaohuihua \ someotherapprk3576_u.mk 中引入 fise_preloadapp.mk$(call inherit-product,device/rockchip/rk3576/rk3576_u/fise_preloadapp/fise_preloadapp.mk)或者直接 includeinclude device/rockchip/rk3576/rk3576_u/fise_preloadapp/fise_preloadapp.mk2、拷贝批量安装脚本到指定目录/system/bin/就是一个拷贝命令如下路径device\rockchip\common\device.mkPRODUCT_COPY_FILES\ $(LOCAL_PATH)/fise_preloadapp/batch_install.sh:/system/bin/batch_install.sh3、批量安装脚本实现-并在开机后自动执行批量安装脚本批量安装脚本编写路径device\rockchip\common\fise_preloadapp\batch_install.sh#!/system/bin/shTAGPreInstallAPKAPK_STORE_DIR/system/preloadappPROP_KEYcustom.fise.preloadappSLEEP_DELAY5log-t $TAG Batch PreInstall Start, delay ${SLEEP_DELAY}s wait system ready sleep ${SLEEP_DELAY}# 读取属性判断是否已经安装过INSTALLED_FLAG$(getprop ${PROP_KEY})if[${INSTALLED_FLAG}1];then log-t $TAGProperty ${PROP_KEY}1, all apks already installed, skipexit0fiif[!-d ${APK_STORE_DIR}];then log-t $TAGError: APK dir ${APK_STORE_DIR} not foundexit1fiALL_OK1forAPK_FILEin ${APK_STORE_DIR}/*.apk; do [ ! -f ${APK_FILE} ] continue log -t $TAG log -t $TAG Handle apk: ${APK_FILE} log -t $TAG Start install ${APK_FILE} pm install -r ${APK_FILE} INSTALL_RET$? if [ ${INSTALL_RET} -eq 0 ]; then log -t $TAG Install ${APK_FILE} SUCCESS else log -t $TAG Install ${APK_FILE} FAILED, ret${INSTALL_RET} ALL_OK0 fi done # 只有全部处理成功才写入标记避免部分失败后无法重试 if [ ${ALL_OK} -eq 1 ]; then setprop ${PROP_KEY} 1 log -t $TAG All APK Batch Install Finish, set ${PROP_KEY}1 else log -t $TAG Some APK failed, keep ${PROP_KEY}0 for retry fi exit 0批量安装脚本-开机执行批量安装路径system\core\rootdir\init.rc# modify by fangchen start service batch_install/system/bin/sh/system/bin/batch_install.shclassmain user root group root disabled oneshot seclabel u:r:shell:s0 # modify by fangchen end on property:sys.boot_completed1bootchart stop #Setupper_boot directory so other.rc could starttouseit on boot_completed exec-system system--/bin/rm-rf/data/per_boot mkdir/data/per_boot0700system system encryptionRequirekeyper_boot_ref # modify by fangchen start start batch_install # modify by fangchen end五、思考如果Android10 及一下的RK平台 可以参考Android 10.0 静默安装脚本实现静默安装app如果是MTK平台Android12/13 及以上可以参考MTK-Android12 静默安装脚本实现静默安装app基本思路就是拷贝文件、执行脚本来实现的。 注意脚本给一个延时不然拷贝还没来的及拷贝成功、脚本执行太早也会有部分问题的。为什么拷贝要搞成编译模块形式这个本身是Android 在Android10 之后主导的特殊文件不允许直接脚本拷贝来实现。总结记录的一次RK平台 Android15 进行的开机脚本静默安装的功能

相关推荐

大模型算法入门:从数学基础到中文处理实战
大模型算法入门:从数学基础到中文处理实战

1. 大模型算法入门全景解读2024年的大模型技术发展已经进入深水区,各类开源模型和商业应用呈现爆发式增长。作为中文社区的学习者,我们正面临一个关键转折点——大模型技术从实验室走向产业化的过程中,产生了大量需要本土化解决的实际问题。我… · 2026/9/23 22:04:32

网络鱼雷协同作战仿真:分布式交互平台选型与联邦架构落地实践
网络鱼雷协同作战仿真:分布式交互平台选型与联邦架构落地实践

简介:一份以分布式交互仿真平台为基础的学术论文PDF,聚焦网络鱼雷协同作战仿真系统,面向军事仿真、分布式开发及水下作战研究人员。论文从网络鱼雷的三种工作状态切入,分析了平台内待命、水面悬浮未入网与组网内巡航等场景的信息交… · 2026/9/23 22:04:32

C++实现三国杀核心规则引擎:零拷贝、状态机与类型安全设计
C++实现三国杀核心规则引擎:零拷贝、状态机与类型安全设计

简介:这是一份基于C实现的轻量级纸牌游戏《三国杀》完整开发资源,面向C初学者与课程设计实践者,聚焦面向过程与面向对象编程训练、基础数据结构应用及命令行交互系统开发。资源包含1个核心源码文件(game.cpp)与1份配套… · 2026/9/23 22:04:26

小智首批设备放量:接入名单与故障恢复的关键策略
小智首批设备放量:接入名单与故障恢复的关键策略

小智首批设备要放量,我第一时间想到的不是刷多少台机器,也不是固件编译参数怎么调,而是三个字:别翻车。做过硬件接入的人都懂,小智这种基于ESP32的AI语音助手方案,和纯软件项目放量完全是两码事。软件出bug… · 2026/9/23 22:43:49

嵌入式开发零基础学习路线:从MCU裸机到Linux应用实战
嵌入式开发零基础学习路线:从MCU裸机到Linux应用实战

1. 嵌入式开发到底在做什么:从“点灯”到“造系统”的认知升级很多人第一次听到“嵌入式开发”,脑子里浮现的画面是焊电路板、插杜邦线、对着示波器发呆。这个印象不算错,但只看到了冰山一角。嵌入式开发的本质,是用软件去控制硬件… · 2026/9/23 22:43:49

裂缝检测数据集解析:VOC与YOLO双格式下的YOLOv8训练实战与避坑指南
裂缝检测数据集解析:VOC与YOLO双格式下的YOLOv8训练实战与避坑指南

简介:面向墙面水泥路面裂缝检测场景,这份资源提供了一套Pascal VOC与YOLO双格式的目标检测标注数据集,适合计算机视觉、深度学习方向的中高级研究者与工程师,可用于训练裂缝识别模型、验证检测算法以及扩充私有数据集。数据涵盖86… · 2026/9/23 22:43:49

K线数据校验与复权处理:量化回测前必做的数据质量检查
K线数据校验与复权处理:量化回测前必做的数据质量检查

先说个真事。去年有个读者给我看他的回测曲线,MA5上穿MA10,就在沪深300里选股,年化收益标着480%。我看着那条45度角的资金曲线,第一反应不是羡慕,而是问他:你的数据复权了吗?他愣住了&#xff0… · 2026/9/23 22:43:42

OpenAI成立数学顾问组:AI已解逾百道开放难题
OpenAI成立数学顾问组:AI已解逾百道开放难题

编者按:当一个AI实验室宣布自己的模型解决了上百个开放数学问题时,最该被追问的或许不是“它有多强”,而是“谁来判断它是对的”。据TechCrunch报道,OpenAI于2026年9月宣布成立一个数学顾问小组(math advisory group&a… · 2026/9/23 22:43:36

学生做课程作业或毕业设计,租 GPU 选哪家?先把答辩前那一晚救下来
学生做课程作业或毕业设计,租 GPU 选哪家?先把答辩前那一晚救下来

课程大作业做到一半,最怕的不是老师问“创新点在哪儿”,而是电脑一跑训练就发烫,进度条像被按了暂停。毕业设计更扎心。数据好不容易清完,代码也不报错,偏偏本地显卡不够用。此时去租 GPU,是很正常的选择。… · 2026/9/23 22:43:36

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码