哪里可以找到Android java.lang.Process waitFor()退出代码的参考?

时间:2013-08-22 13:18:34

标签: java android process silent-installer

我正在尝试以静默方式将APK安装到Android设备上,以尝试在我的应用中构建自动更新功能。该应用程序将下载最新的apk并静默安装它。此应用程序不会在Play商店中分发,我专门为一组封闭的用户构建一种类型的设备。我已按照this SO帖子中的说明实现静默安装,但我遇到了问题。

我已经使用我从设备制造商处收到的证书签署了我的apk,并且我正在尝试使用以下代码静默安装我新下载的apk:

Process install = Runtime.getRuntime().exec("pm install -r " + path);
return install.waitFor();

waitFor()方法返回退出值9.我不知道这意味着什么也无法在线找到任何解释每个代码含义的文档。我发现另一个SO post解释这些代码是任意的,并且取决于要定义的特定程序,我应该查阅该特定程序的文档/源代码以确定该代码的含义。我不确定如何去做这件事,我期待waitFor()方法的Android文档解释每个代码。有谁知道我在哪里可以找到有关这些退出代码的信息?

非常感谢,

1 个答案:

答案 0 :(得分:2)

退出值完全取决于您运行的进程,因此您无法找到任何解释,因为它完全取决于程序。虽然您始终可以假设非零退出值意味着失败。

在Android中,退出值可能是以下两项内容之一(请参阅参考资料):

  1. 如果程序正常结束,则它是真正的退出值(使用System.exit(n)创建)
  2. 如果程序被信号杀死,那就是该信号的编号。
  3. 您正在尝试执行pm。检查pm的源代码表明即使失败也始终返回0。所以9只能意味着一个信号,这就是SIGKILL。

    这意味着您的执行已被杀死。


    请注意,要使用参数执行程序,最好使用带数组的重载:

    Runtime.getRuntime().exec(new String[]{"/system/bin/pm", "install", "-r", path});
    

    另请检查Install apps silently, with granted INSTALL_PACKAGES permission如何以编程方式正确安装软件包。