是否有一个 API 可以Xposed
从外壳(使用ADB
)而不是通过设备的 UI 启用 Android 中的模块。
当我们需要在干净的测试模拟器上安装我们的模块时,这一直是自动化的麻烦。这是目前我们需要手动执行的唯一步骤。
一个简单的谷歌搜索+文档概述XPosed
并没有产生任何有价值的东西。
是否有一个 API 可以Xposed
从外壳(使用ADB
)而不是通过设备的 UI 启用 Android 中的模块。
当我们需要在干净的测试模拟器上安装我们的模块时,这一直是自动化的麻烦。这是目前我们需要手动执行的唯一步骤。
一个简单的谷歌搜索+文档概述XPosed
并没有产生任何有价值的东西。
如您所知,这是最终用户不喜欢的方法,但为了测试,您必须将 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 建议的。
这在 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