android 预装第三方apk的方法

本文介绍了如何预装第三方APK到Android设备的/data/app/目录下,使得用户可以卸载。关键步骤包括:在pm.jar中添加preinstall命令,修改init.rc以定义预装服务,编写执行预装命令的脚本,以及将预装APK放置到/system/preinstall目录。整个过程详细阐述了预装APK的工作原理。

        预装第三方apk,并不是装到/system/app下,而是装到/data/app/下,这两者是有区别是,

前者用户是不可以卸载的,后者用户可以卸载,我们现在实现的就是后者。

1 pm.jar包中添加preinstall命令

修改:frameworks/base/cmds/pm/src/com/android/commands/pm/pm.java

--- a/cmds/pm/src/com/android/commands/pm/Pm.java
+++ b/cmds/pm/src/com/android/commands/pm/Pm.java
@@ -106,6 +106,10 @@ public final class Pm {
             runInstall();
             return;
         }
+        if ("preinstall".equals(op)) {
+               preInstall();
+                       return;
+        }
 
         if ("uninstall".equals(op)) {
             runUninstall();
@@ -763,7 +767,50 @@ public final class Pm {
             System.err.println(PM_NOT_RUNNING_ERR);
         }
     }
-
+       private void preInstall() {
+                String path = nextArg();
+                int i;
+                
+                System.err.println("\t preInstall path: " + path);
+            
### 如何在Android设备上使用Shell命令处理第三方APK #### 使用ADB Shell安装管理APK 对于在Android设备上通过Shell命令操作第三方APK,主要依赖于`adb shell`工具。此工具允许开发者向连接的Android设备发送各种指令。 可以利用`pm install`命令来安装APK文件: ```bash adb shell pm install /path/to/app.apk ``` 卸载应用程序则可以通过下面这条命令实现[^1]: ```bash adb shell pm uninstall com.example.app ``` 查询已安装的应用程序列表及其包名信息也十分简单: ```bash adb shell pm list packages -f | grep appname ``` 上述命令中的`grep appname`部分用于过滤特定名称的应用;如果不加这个条件,则会返回所有已知应用的信息。 #### 修改或替换现有APK 如果想要更新已经存在于系统中的某个预装APP版本,除了直接覆盖原路径下的`.apk`外,还可以先将其删除再重新部署新版本。需要注意的是,在某些情况下可能还需要重启设备才能使更改生效。 另外一种方式是借助`apktool`反编译并编辑资源文件后再打包回原状,最后按照前述方法进行重装[^2]。 #### 执行自定义脚本或命令 当涉及到更复杂的场景比如启动服务、传递参数给后台进程等动作时,可以在代码层面集成相应的逻辑,例如MTK平台上的做法是在合适的位置加入必要的shell语句以完成指定任务[^3]。 此外,也可以编写独立的sh脚本来封装一系列连续的操作步骤,从而简化日常维护工作量。不过这通常适用于拥有root权限的情况之下。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值