5

是否有一个 API 可以Xposed从外壳(使用ADB)而不是通过设备的 UI 启用 Android 中的模块。

当我们需要在干净的测试模拟器上安装我们的模块时,这一直是自动化的麻烦。这是目前我们需要手动执行的唯一步骤。

一个简单的谷歌搜索+文档概述XPosed并没有产生任何有价值的东西。

4

2 回答 2

6

如您所知,这是最终用户不喜欢的方法,但为了测试,您必须将 apk 的路径回显到 Xposed 配置文件:

前棒棒糖:

adb shell "echo '/data/app/com.xyz.example-1.apk' >> /data/data/de.robv.android.xposed.installer/conf/modules.list"

棒棒糖和更新:

adb shell "echo '/data/app/com.xyz.example-1 OR -2/base.apk' >> /data/data/de.robv.android.xposed.installer/conf/modules.list"

对于这些命令,您需要让您的模拟器支持 root adb,输入

adb root

进入命令行。如果你的模拟器不支持 root/不安全的 adbd,你也可以在echo之前添加一个su -c来获得 root 权限。

编辑:查找必须在目录名称中使用的数字的最简单方法是@brendan 建议的。

于 2015-05-06T18:09:01.197 回答
1

这在 KitKat 上对我有用:

(1) 更新shared_pres xml文件:

如果你看/data/data/de.robv.android.xposed.installer/shared_prefs/目录。您将看到一个enabled_modules.xml文件。

在我的情况下,我只使用一个模块,所以我只会覆盖文件。如果您有多个模块,您可能希望进行编辑/更新。

我会有一个enabled_modules.xml看起来像这样的本地文件:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<map>
  <int name="com.companyname.xposedmodule" value="1" />
</map>

...com.companyname.xposedmodule您的模块的名称在哪里。

然后发布构建你可以执行一个简单的:

adb push enabled_modules.xml /data/data/de.robv.android.xposed.installer/shared_prefs/

(2) 更新 modules.list 配置文件:

您还需要按照@Maxr1998 的建议进行操作。我这样编写脚本:

adb shell "[ -f /data/app/com.companyname.xposedmodule-1.apk ] && echo '/data/app/com.companyname.xposedmodule-1.apk' >> /data/data/de.robv.android.xposed.installer/conf/modules.list
adb shell "[ -f /data/app/com.companyname.xposedmodule-2.apk ] && echo '/data/app/com.companyname.xposedmodule-2.apk' >> /data/data/de.robv.android.xposed.installer/conf/modules.list
于 2015-07-21T16:23:38.190 回答