news 2026/7/3 9:35:25

MTK-Android12 静默安装脚本实现静默安装app

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MTK-Android12 静默安装脚本实现静默安装app

提示:通过脚本实现静默安装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/shTAG="BatchPreInstallAPK"APK_STORE_DIR="/system/preloadapp"MARK_FILE="/data/preinstall_all_apks.mark"SLEEP_DELAY=20 log-t$TAG"===== Batch PreInstall Start, delay ${SLEEP_DELAY}s wait system ready ====="sleep${SLEEP_DELAY}if[-f ${MARK_FILE}];then log-t$TAG"Mark file exist, all apks already installed, skip"exit0 fiif[!-d ${APK_STORE_DIR}];then log-t$TAG"Error: APK dir ${APK_STORE_DIR} not found"exit1 fiforAPK_FILE in ${APK_STORE_DIR}/*.apk;do[!-f"${APK_FILE}"]&&continuelog-t$TAG"========================"log-t$TAG"Handle 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$TAG"Failed parse package name, skip this apk"continuefi log-t$TAG"Parse package name: ${PKG_NAME}"pm list packages ${PKG_NAME}|grep-q ${PKG_NAME}if[$?-eq0];then log-t$TAG"App ${PKG_NAME} already installed, skip"continuefi log-t$TAG"Start install ${PKG_NAME}"pm install-r"${APK_FILE}"INSTALL_RET=$?if[${INSTALL_RET}-eq0];then log-t$TAG"Install ${PKG_NAME} SUCCESS"elselog-t$TAG"Install ${PKG_NAME} FAILED, ret=${INSTALL_RET}"fi done touch ${MARK_FILE}log-t$TAG"===== All APK Batch Install Finish, write mark file ====="exit0

3、将拷贝脚本作为开机服务-开机自启

参考之前笔记文章: 开机内置拷贝二进制文件到/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.rc

on 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_completed=1......startbatch_install

四、功能验证

查看拷贝脚本-拷贝资源是否已经成功

/system/bin/ 下查看可执行脚本

/system/preloadapp/ 下查看预制的apk 资源包

logcat 日志验证

开机后,logcat验证:

说上,说明开机后 开机自启执行了脚本自动安装脚本

实际机器看一下安装-app是否真的安装成功

查看更多应用,有木有静默安装的apk,如下 已经有了的,静默安装成功。

总结-思考

  • 这里面通过脚本实现静默安装功能,子啊实际开发中各种原因可以作为一种预案
  • 对于安装脚本可以自行优化,有优化的空间。时间上、日志显示上方便验证和差错
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/27 9:46:26

Music Megathread:一个集合了海量音乐资源的开源项目

文章目录Music Megathread:一个集合了海量音乐资源的开源项目Music Megathread:一个集合了海量音乐资源的开源项目 在 GitHub 上,有一个专门为音乐爱好者整理的资源仓库,目前获得了 2800 多个 Star。这个项目叫 Music Megathread&…

作者头像 李华
网站建设 2026/6/27 9:35:24

云南外贸公司税务合规怎么做?中小外贸企业财税避坑指南

云南外贸公司税务合规怎么做?中小外贸企业财税避坑指南对云南外贸企业来说,税务合规的重点不是单独追求“少缴税”,而是把业务真实性、合同流、发票流、资金流、物流和申报资料统一起来。尤其是做出口、跨境电商、批发贸易、一般纳税人业务的…

作者头像 李华
网站建设 2026/6/27 9:33:26

从流程到业务管理,5款免费低代码平台一次看懂

概述对于很多企业来说,选低代码平台时最关注的通常是几个问题:是否免费、是否好用、是否适合长期使用、是否能满足数据安全与管理要求。基于这些实际需求,下面推荐5款值得关注的免费低代码平台。1、斑斑AI低代码如果从“使用成本”和“部署灵…

作者头像 李华