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

我可以在有根设备上使用busybox在后台安装apk吗?

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

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");

【问题讨论】:

    标签: android busybox android-install-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 搞定了
        猜你喜欢
        • 2012-01-10
        • 2015-10-18
        • 1970-01-01
        • 2017-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多