Android Studio搭建Xposed项目

添加依赖

settings.gradle
在dependencyResolutionManagement添加

1
2
3
4
5
6
7
8
9
10
11
12
13
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

1
2
3
4
5
6
dependencies {
...
// **
compileOnly 'de.robv.android.xposed:api:82'
compileOnly 'de.robv.android.xposed:api:82:sources'
}

修改配置

AndroidManifest.xml在application标签中

1
2
3
4
5
6
7
8
9
10
11
12
13
<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>

编写类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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

1
com.example.xx.Xxx