1

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

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

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

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

非常感谢,

托尼

4

1 回答 1

2

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

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

  1. 如果程序正常完成,它就是真正的退出值(使用创建System.exit(n)
  2. 如果程序被一个信号杀死,它就是那个信号的编号。

您正在尝试执行pm. 检查源代码pm显示即使失败也总是返回 0。所以 9 可能只表示一个信号,这里是 SIGKILL。

这意味着你的处决已被杀死。


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

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

还要检查Install apps quietly, with given INSTALL_PACKAGES 权限,了解如何以编程方式正确安装包。

于 2013-08-22T13:37:29.667 回答