android - 在我的应用程序中创建一个模拟的 Android 环境

标签 android

正如标题所说,我需要在我的应用程序中创建一个模拟的 Android 环境。我需要能够在此环境中安装应用程序,而无需在设备上安装它们。

我知道这是可能的,因为 this app做到了。

我已经搜索了一段时间,我知道该应用通过创建 Android 环境来做到这一点,但我似乎没有找到如何做到这一点的线索。

编辑:

我找到了另一个可以做到的应用

Parallel Space

最佳答案

这取决于您需要运行应用程序的程度以及“安装”应用程序的构成。请记住,.apk 文件只是一个 java .jar 文件,在不同的地方隐藏了一些额外的数据。

要在不安装 Android 应用程序的情况下运行部分应用程序,您需要

  1. 打开并解析 apk。 This APKParser class可能是一个不错的起点。
  2. 请求相关应用所需但您的应用尚未请求的任何权限。在较旧版本的 Android 中,您只需请求所有可能的权限即可开始使用,但对于较新版本,您可以 requestPermissions方便时制作实际的权限请求对话框。
  3. 将应用程序中的 classes.dex 复制到您的数据文件夹中。如果它使用您也使用的任何公共(public)类,您可能希望将这些从 dex 文件中删除,这样您就不会遇到类加载冲突,或者对类加载器要非常非常小心。
  4. Load the dex file使用 DexFileLoader。
  5. 此时您可以在 apk 中加载几乎任何代码,但您将无法直接加载 Activity ,因为它们未在您的 AndroidManifest.xml 中定义>。相反,您需要创建一个“外观”Activity,在反射中托管实际 Activity,并将上下文等内容连接到反射 Activity。

这些步骤应该可以在不安装它们的情况下运行至少简单的应用程序。

关于android - 在我的应用程序中创建一个模拟的 Android 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38368222/

相关文章:

android - 无法通过 TCP/IP 连接 Android ADB

android - Android 上的 PDF 阅读

android - Xamarin 和 Android - 退出方法时崩溃

android - 当动画 Activity 在android中移动时如何只锁定工具栏?

android - 如何使用 ADB 工具将所有文件复制到我的电脑?

java - if语句比较java android中的字符串

android - 在 Android 应用程序中使用 Google+ API 登录

android - RNCamera 错误 :TypeError: CameraManager. checkIfRecordAudioPermissionsAreDefined 不是函数

android - 如何使用 Square OKHTTP 固定证书?

android - Android IME 中基于字典的自动建议