跳到主要内容

Android Studio搭建Xposed项目

· 阅读需 1 分钟
Apache王也道长
软件开发者与技术作者

settings.gradle 在dependencyResolutionManagement添加 Xposed 会修改应用运行时行为,只应在自有设备、测试应用和获得授权的环境中使用。不同 Android、LSPosed 和目标应用版本可能导致接口变化,排查时应先记录完整版本信息。

dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// **
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
maven { url 'https://api.xposed.info/' }
}
}

app:build.gradle

dependencies {
...
// **
compileOnly 'de.robv.android.xposed:api:82'
compileOnly 'de.robv.android.xposed:api:82:sources'
}

修改配置

AndroidManifest.xml在application标签中

<application ...>
...
<!-- ** -->
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="xposed desc" />
<meta-data
android:name="xposedminversion"
android:value="82" />
</application>

编写类

package com.example.xx;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public class Xxx implements IXposedHookLoadPackage {

@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
Log.i(TAG, lpparam.packageName);
if (lpparam.packageName.startsWith("com.tencent.mm")) {
hook(lpparam.classLoader);
}
}
private void hook(final ClassLoader appClassLoader) {

}

}

编写xposed_init

在main文件夹下创建assets文件夹 创建xposed_init

com.example.xx.Xxx

本文阅读量:--

总访问量 -- · 访客数 --