使用busybox在后台安装apk

Posted

技术标签:

【中文标题】使用busybox在后台安装apk【英文标题】:install apk in background using busybox 【发布时间】:2012-09-17 21:35:12 【问题描述】:

我可以在有根设备上吗?

我看到类似的东西,但它不起作用

process install;
CommandCapture command = new CommandCapture(0, "chmod 777 /data/app");
RootTools.getShell(true).add(command).waitForFinish(); 
CommandCapture command2 = new CommandCapture(0, "chmod 777 /system/xbin/busybox");
RootTools.getShell(true).add(command2).waitForFinish();
install = Runtime.getRuntime().exec("/system/xbin/busybox install " + Environment.getExternalStorageDirectory() + "/Download/" + "xxx.apk /data/app/xxx.apk");

【问题讨论】:

【参考方案1】:

不使用busybox

install = Runtime.getRuntime().exec("su");   
DataOutputStream os = new DataOutputStream(install.getOutputStream());  
os.writeBytes("pm install "+APKFile.apk+"\n");  
os.writeBytes("exit\n"); 
os.flush();
install.waitFor();

【讨论】:

【参考方案2】:

看起来你为你的busybox二进制文件使用了两条路径。首先你在/system/xbinchmod 它,然后你从system/bin 调用它。确保您使用正确的路径。 chmod 777 /data/app 看起来非常糟糕

【讨论】:

【参考方案3】:

如果您在 root shell 中运行su -c pm install myapp.apk,您应该可以在后台安装(注意“pm”)部分。这与busybox无关,你可以使用任何shell,当然不需要更改/data/app的权限。

【讨论】:

感谢您的回答,但我想以编程方式安装 apk,而不是从 shell 这正是您上面的鳕鱼想要做的:使用命令 (install) 和参数 (xxx.apk) 启动 shell (busybox)。问题是没有install这样的命令,你需要使用pm install。您从哪里复制此代码?阅读他们的文档/自述文件以了解它的实际作用。 在busybox中没有安装命令,它只是复制apk并将其放入/data/app中,当你重新启动设备时开始安装 复制 /data/app 与安装不同。不确定busybox 命令究竟做了什么,但如果你真的想安装它,请使用pm 命令。无论如何,您的问题到底是什么?它如何“不起作用”?考虑修改您的原始问题并提供更多详细信息。 谢谢你@Nikolay 我用 pm install 搞定了

以上是关于使用busybox在后台安装apk的主要内容,如果未能解决你的问题,请参考以下文章

Android 静默安装(自动安装)和静默卸载的实现方法

Android 静默安装(自动安装)和静默卸载的实现方法

使用 jenkins 自动化编译cordova for android 生成 APK

在多台手机上批量安装apk

Alpine镜像

adb 安装apk 命令