提示通过脚本实现静默安装app文章目录前言 - 需求一、 涉及到的知识点1、静默安装-资源包拷贝2、静默安装脚本编写-配置开机启动-实现安装二、 参考资料静默安装参考拷贝资源参考开机自启脚本实现参考三、实现方案大佬实现方案个人实现方案1、 预置安装资源到系统2、拷贝脚本实现3、将拷贝脚本作为开机服务-开机自启配置编译模块-将可执行文件放到指定目录配置编译模块脚本-实现拷贝工作开机脚本init.rc 文件中配置开机自启-配置服务on post-fs-data 路径下授可执行文件权限创建自定义的开机自启服务开机后sys.boot_completed 自启服务四、功能验证查看拷贝脚本-拷贝资源是否已经成功/system/bin/ 下查看可执行脚本/system/preloadapp/ 下查看预制的apk 资源包logcat 日志验证实际机器看一下安装-app是否真的安装成功总结-思考前言 - 需求这里讲的是静默安装的功能之前做过几篇静默安装笔记其实已经实现功能的但是都是基于代码层面也就是基于Framework APK或者 应用App来实现的。看到大佬的博客用脚本来实现 Android 10.0 静默安装脚本实现静默安装app我觉得很有意义自己也实现一遍。但是两者思想一样实际实现方案完全不一样 都可以供参考。不同版本、不同芯片平台要求不一样导致的个人的更加通用。一、 涉及到的知识点首先要搞清楚这个需求涉及到哪些知识点这里特别列出来 其实就是一个大纲。1、静默安装-资源包拷贝总得准备需要静默安装的资源包apk吧2、静默安装脚本编写-配置开机启动-实现安装如上1中安装的apk资源包准备好后就可以进行安装了那么安装一定是通过脚本安装的所以务必要求静默安装的脚步静默安装脚本肯定需要执行那么其实就是一个服务开机自启服务二、 参考资料静默安装参考直接上大神的一篇如果版本低于Android11 可以参考Android 10.0 静默安装脚本实现静默安装app其它自己之前笔记PMS安装apk之界面跳转Android13-包安装器PackageInstaller-之apk安装流程MTK-Android13-包安装器PackageInstaller 静默安装实现RK-Android11-PackageInstaller安装器自动安装功能实现拦截adb install/uninstall安装 - 安装流程分析RK3576-Android15-整合PackageInstaller实现静默安装功能拷贝资源参考MTK-Android12拷贝apk文件到指定目录-如system目录下开机内置拷贝二进制文件到/system/bin目录-并实现开机自启二进制脚本服务预制资源-拷贝文件-/system/lib/ 目录-拷贝可执行文件/system/bin/-拷贝文件到/system/etc/permissions目录系统拷贝文件到data分区-/data/system目录-实战拷贝资源到vendor分区Rk-内置应用作为系统Launcher-内置APK-拷贝文件-替换开机动画拷贝预置资源到vendor分区-/vendor/lib目录/vendor/lib/hw目录-vendor/etc目录-拷贝可执行文件配置系统拷贝预置资源-拷贝到/system/bin目录-拷贝可执行文件并启动-拷贝到product/etc分区-拷贝到system/etc分区开机自启脚本实现参考开机内置拷贝二进制文件到/system/bin目录-并实现开机自启二进制脚本服务三、实现方案大佬实现方案Android 10.0 静默安装脚本实现静默安装app个人实现方案1、 预置安装资源到系统如上篇笔记详细做了相关说明MTK-Android12拷贝apk文件到指定目录-如system目录下2、拷贝脚本实现我直接把拷贝脚本放出来了可直接使用batch_install.sh#!/system/bin/shTAGBatchPreInstallAPKAPK_STORE_DIR/system/preloadappMARK_FILE/data/preinstall_all_apks.markSLEEP_DELAY20 log-t$TAG Batch PreInstall Start, delay ${SLEEP_DELAY}s wait system ready sleep${SLEEP_DELAY}if[-f ${MARK_FILE}];then log-t$TAGMark file exist, all apks already installed, skipexit0 fiif[!-d ${APK_STORE_DIR}];then log-t$TAGError: APK dir ${APK_STORE_DIR} not foundexit1 fiforAPK_FILE in ${APK_STORE_DIR}/*.apk;do[!-f${APK_FILE}]continuelog-t$TAGlog-t$TAGHandle apk: ${APK_FILE}# PKG_NAME$(aapt2 dump badging ${APK_FILE} 2/dev/null | grep package: | awk {print $2} | sed s/name//g | sed s/\//g)PKG_NAME$(pm dump packages-f${APK_FILE}2/dev/null|grep package|head-n1|cut-d-f2|cut-d/-f1)if[-z${PKG_NAME}];then log-t$TAGFailed parse package name, skip this apkcontinuefi log-t$TAGParse package name: ${PKG_NAME}pm list packages ${PKG_NAME}|grep-q ${PKG_NAME}if[$?-eq0];then log-t$TAGApp ${PKG_NAME} already installed, skipcontinuefi log-t$TAGStart install ${PKG_NAME}pm install-r${APK_FILE}INSTALL_RET$?if[${INSTALL_RET}-eq0];then log-t$TAGInstall ${PKG_NAME} SUCCESSelselog-t$TAGInstall ${PKG_NAME} FAILED, ret${INSTALL_RET}fi done touch ${MARK_FILE}log-t$TAG All APK Batch Install Finish, write mark file exit03、将拷贝脚本作为开机服务-开机自启参考之前笔记文章 开机内置拷贝二进制文件到/system/bin目录-并实现开机自启二进制脚本服务配置编译模块-将可执行文件放到指定目录配置模块名称batch_install配置编译模块脚本-实现拷贝工作如上Android.mk文件LOCAL_PATH:$(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE:batch_installLOCAL_MODULE_TAGS:optionalLOCAL_MODULE_CLASS:EXECUTABLESLOCAL_SRC_FILES:fise/batch_install.shLOCAL_MODULE_PATH:$(TARGET_OUT)/binLOCAL_CHECK_ELF_FILES:falseinclude $(BUILD_PREBUILT)开机脚本init.rc 文件中配置开机自启-配置服务路径\system\core\rootdir\init.rcon post-fs-data 路径下授可执行文件权限on post-fs-data......chmod0755/system/bin/batch_install chown0.0/system/bin/batch_install创建自定义的开机自启服务service batch_install/system/bin/batch_installclassmain user rootgrouproot seclabel u:r:system_server:s0 disabled oneshot开机后sys.boot_completed 自启服务on property:sys.boot_completed1......startbatch_install四、功能验证查看拷贝脚本-拷贝资源是否已经成功/system/bin/ 下查看可执行脚本/system/preloadapp/ 下查看预制的apk 资源包logcat 日志验证开机后logcat验证说上说明开机后 开机自启执行了脚本自动安装脚本实际机器看一下安装-app是否真的安装成功查看更多应用有木有静默安装的apk,如下 已经有了的静默安装成功。总结-思考这里面通过脚本实现静默安装功能子啊实际开发中各种原因可以作为一种预案对于安装脚本可以自行优化有优化的空间。时间上、日志显示上方便验证和差错
企业数字化 ERP 产品动态
相关推荐
如何快速掌握AI语音转换:用10分钟音频训练专业级声库的完整指南 如何快速掌握AI语音转换:用10分钟音频训练专业级声库的完整指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voic… · 2026/9/21 2:08:12
Windows系统下解决HTTPS资源拦截难题:res-downloader证书配置实战指南 Windows系统下解决HTTPS资源拦截难题:res-downloader证书配置实战指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader … · 2026/9/19 9:14:13
macOS x64与ARM64架构全解析:从芯片识别到Rosetta实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 22:04:02
数字孪生概念对齐与工程实践:从实时数据同步到Unity原型验证 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 22:04:02
Neo4j医疗知识图谱:三节点五关系实现临床路径推理 简介:本资源是一个面向初学者与医疗信息化从业者的Neo4j知识图谱实践项目,聚焦医疗问答场景,解决疾病、症状、治疗等实体间关系建模与高效查询问题。压缩包共37个文件,含13个Python脚本(涵盖爬虫spider1.py/spider2.py… · 2026/9/26 22:03:32
沈阳企业网站怎样制作?告别模板陷阱的完整流程 沈阳企业网站怎样制作?告别模板陷阱的完整流程 还在用那种千篇一律的模板网站?看着隔壁老王的站都换了三版,你的站还是三年前的样子,客户点进来3秒就关掉,连个电话都不留。这不仅是丑的问题,是直接把生意往外推。… · 2026/9/26 22:03:10
Atlas 300V 24G AI推理加速卡部署YOLO全流程实战 先回答热搜里大家最关心的那句话:Atlas 300V 24G确实是运算加速卡,但它不是我们熟悉的GPU那种通用加速卡,它是专门为AI推理设计的加速卡。很多朋友一听到“加速卡”三个字,下意识就想到“那我是不是可以拿它跑CUDA、搞并行计算”&… · 2026/9/26 22:03:02
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46