使用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/xbin
中chmod
它,然后你从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的主要内容,如果未能解决你的问题,请参考以下文章