以编程方式安装Android apk作为测试框架的一部分

Sam*_*ett 7 android automated-tests robotium

我正在尝试以编程方式安装apk,但我没有太多运气.我正在建立一个针对物理设备的自动化测试框架,我想让测试设备在运行测试之前从构建服务器中检索最新的apk.虽然我知道没有一般方法在未经用户同意的情况下实际安装apk,但我很好奇是否在开发人员拥有apk和设备的情况下可能有一些方法可用.

我过去尝试过的方法(apk已下载到pathName/apkFilename):

String command = "adb install " + pathName + apkFilename;
Runtime.getRuntime().exec(command);
Run Code Online (Sandbox Code Playgroud)

和:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(pathName + apkFilename)), "application/vnd.android.package-archive");
getActivity().startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

虽然我还没有能够获得第一种工作方法,但第二次尝试创建了一个系统对话框,要求用户确认安装(几乎在那里,但不完全).由于它是一个系统对话框,遗憾的是,我无法使用Robotium进行确认.

Mer*_*ham 2

很多人都在尝试解决类似的问题。我相信在没有确认的情况下可能无法安装 APK,至少不容易:

我已经接受了一段时间了,在 Android 上静默安装应用程序是不可能的

你不能静默安装应用程序,Android 不支持它,原因很明显。应用程序安装需要用户干预才能继续。

解决方法?

您需要该应用程序拥有权限android.permission.INSTALL_PACKAGES

如果您拥有某些特权,这些线程上有一些关于如何执行此操作的提示,尽管可能很难让您的应用程序以这种方式运行。您可能必须安装到特殊目录,和/或可能必须以特殊用户身份运行(这可能很难做到)。

以提升的权限运行应用程序的一种可能方法:如何通过 Android SDK 获得 root 权限?

在此线程中,他们提到您可能必须“root”您的手机才能启用该权限:

如果这使保修失效,我不会感到惊讶。您在帖子的评论中提到您没有“对设备的控制权”,因此这也可能会终止此选项。

有人提到了一些应用程序使用的漏洞利用线程,但我认为它们不受支持。如果他们仍然工作,他们可能会在某个时候停止工作。


归档时间:

查看次数:

7743 次

最近记录:

13 年,8 月 前