正如标题所说,我需要在我的应用程序中创建一个模拟的 Android 环境。我需要能够在此环境中安装应用程序,而无需在设备上安装它们。
我知道这是可能的,因为 this app做到了。
我已经搜索了一段时间,我知道该应用通过创建 Android 环境来做到这一点,但我似乎没有找到如何做到这一点的线索。
编辑:
我找到了另一个可以做到的应用
最佳答案
这取决于您需要运行应用程序的程度以及“安装”应用程序的构成。请记住,.apk
文件只是一个 java .jar
文件,在不同的地方隐藏了一些额外的数据。
要在不安装 Android 应用程序的情况下运行部分应用程序,您需要
- 打开并解析 apk。 This APKParser class可能是一个不错的起点。
- 请求相关应用所需但您的应用尚未请求的任何权限。在较旧版本的 Android 中,您只需请求所有可能的权限即可开始使用,但对于较新版本,您可以
requestPermissions
方便时制作实际的权限请求对话框。 - 将应用程序中的 classes.dex 复制到您的数据文件夹中。如果它使用您也使用的任何公共(public)类,您可能希望将这些从 dex 文件中删除,这样您就不会遇到类加载冲突,或者对类加载器要非常非常小心。
- Load the dex file使用 DexFileLoader。
- 此时您可以在 apk 中加载几乎任何代码,但您将无法直接加载 Activity ,因为它们未在您的
AndroidManifest.xml
中定义>。相反,您需要创建一个“外观”Activity,在反射中托管实际 Activity,并将上下文等内容连接到反射 Activity。
这些步骤应该可以在不安装它们的情况下运行至少简单的应用程序。
关于android - 在我的应用程序中创建一个模拟的 Android 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38368222/