Skip to content

Commit 53d0dbd

Browse files
committed
Refactor project structure
1 parent 573f523 commit 53d0dbd

File tree

207 files changed

+423
-250
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

207 files changed

+423
-250
lines changed

Diff for: Bridge/build.gradle

-132
This file was deleted.

Diff for: README.md

+3-4

Diff for: build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ buildscript {
77
jcenter()
88
}
99
dependencies {
10-
classpath 'com.android.tools.build:gradle:3.2.1'
10+
classpath 'com.android.tools.build:gradle:3.3.2'
1111

1212

1313
// NOTE: Do not place your application dependencies here; they belong

Diff for: Core/.gitignore renamed to edxp-core/.gitignore

File renamed without changes.
File renamed without changes.

Diff for: Core/build.gradle renamed to edxp-core/build.gradle

+9-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import org.gradle.internal.os.OperatingSystem;
2-
1+
import org.gradle.internal.os.OperatingSystem
32
apply plugin: 'com.android.library'
43
version "v0.3.1.6_beta-SNAPSHOT"
54
extensions["module_name"] = "EdXposed"
@@ -28,12 +27,12 @@ afterEvaluate {
2827
def nameCapped = variant.name.capitalize()
2928
def nameLowered = variant.name.toLowerCase()
3029

31-
def zipTask = task("zip${nameCapped}", type: Exec, dependsOn: ":Bridge:makeAndCopy${nameCapped}") {
30+
def zipTask = task("zip${nameCapped}", type: Exec, dependsOn: ":edxp-yahfa:makeAndCopy${nameCapped}") {
3231
workingDir '..'
33-
commandLine 'sh', 'build.sh', \
34-
project.name, \
35-
"${project.version}-${nameLowered}", \
36-
"${project.extensions['module_name']}"
32+
commandLine 'sh', 'build.sh', \
33+
project.name, \
34+
"${project.version}-${nameLowered}", \
35+
"${project.extensions['module_name']}"
3736
}
3837

3938
def pushTask = task("push${nameCapped}", type: Exec) {
@@ -51,3 +50,6 @@ afterEvaluate {
5150
}
5251

5352
}
53+
54+
dependencies {
55+
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

Diff for: edxp-yahfa/build.gradle

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
apply plugin: 'com.android.application'
2+
3+
android {
4+
compileSdkVersion 28
5+
6+
defaultConfig {
7+
applicationId "com.elderdrivers.riru.edxp.yahfa"
8+
minSdkVersion 26
9+
targetSdkVersion 28
10+
versionCode 1
11+
versionName "1.0"
12+
}
13+
14+
buildTypes {
15+
release {
16+
minifyEnabled false
17+
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
18+
}
19+
}
20+
21+
}
22+
23+
dependencies {
24+
compileOnly files("libs/framework-stub.jar")
25+
implementation project(':xposed-bridge')
26+
compileOnly project(':dexmaker')
27+
}
28+
29+
30+
preBuild.doLast {
31+
def imlFile = file(project.name + ".iml")
32+
println 'Change ' + project.name + '.iml order'
33+
try {
34+
def parsedXml = (new groovy.util.XmlParser()).parse(imlFile)
35+
def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' }
36+
parsedXml.component[1].remove(jdkNode)
37+
def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform"
38+
new groovy.util.Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK'])
39+
groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile))
40+
} catch (FileNotFoundException e) {
41+
// nop, iml not found
42+
}
43+
}
44+
45+
afterEvaluate {
46+
47+
tasks.withType(JavaCompile) {
48+
options.compilerArgs.add("-Xbootclasspath/p:${projectDir.absolutePath}/libs/framework-stub.jar")
49+
}
50+
51+
android.applicationVariants.all { variant ->
52+
def nameCapped = variant.name.capitalize()
53+
def nameLowered = variant.name.toLowerCase()
54+
55+
def makeAndCopyTask = task("makeAndCopy${nameCapped}", type: Jar, dependsOn: "assemble${nameCapped}") {
56+
from "build/intermediates/dex/${nameLowered}/mergeDex${nameCapped}/out/"
57+
destinationDir file("../edxp-core/template_override/system/framework/")
58+
baseName "edxp"
59+
}
60+
}
61+
}
File renamed without changes.
File renamed without changes.

Diff for: edxp-yahfa/src/main/AndroidManifest.xml

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<manifest package="com.elderdrivers.riru.edxp.yahfa" />

Diff for: Bridge/src/main/java/com/elderdrivers/riru/edxp/util/ClassLoaderUtils.java renamed to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/ClassLoaderUtils.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.List;
1212

1313
import dalvik.system.PathClassLoader;
14+
import de.robv.android.xposed.XposedHelpers;
1415

1516
public class ClassLoaderUtils {
1617

@@ -91,7 +92,7 @@ public static boolean addPathToClassLoader(ClassLoader classLoader) {
9192
try {
9293
PathClassLoader baseDexClassLoader = (PathClassLoader) classLoader;
9394
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
94-
baseDexClassLoader.addDexPath(DEXPATH);
95+
XposedHelpers.callMethod(baseDexClassLoader, "addDexPath", DEXPATH);
9596
} else {
9697
DexUtils.injectDexAtFirst(DEXPATH, baseDexClassLoader);
9798
}

Diff for: Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/Main.java renamed to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/Main.java

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.elderdrivers.riru.common.KeepAll;
88
import com.elderdrivers.riru.edxp.BuildConfig;
99
import com.elderdrivers.riru.edxp.yahfa.core.HookMethodResolver;
10+
import com.elderdrivers.riru.edxp.yahfa.entry.Router;
1011
import com.elderdrivers.riru.edxp.yahfa.proxy.BlackWhiteListProxy;
1112
import com.elderdrivers.riru.edxp.yahfa.proxy.NormalProxy;
1213
import com.elderdrivers.riru.edxp.util.Utils;
@@ -26,6 +27,7 @@ public class Main implements KeepAll {
2627
static {
2728
init(Build.VERSION.SDK_INT);
2829
HookMethodResolver.init();
30+
Router.injectConfig();
2931
}
3032

3133
///////////////////////////////////////////////////////////////////////////////////////////////
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.elderdrivers.riru.edxp.yahfa.config;
2+
3+
import com.elderdrivers.riru.edxp.config.EdXpConfig;
4+
import com.elderdrivers.riru.edxp.config.InstallerChooser;
5+
import com.elderdrivers.riru.edxp.yahfa.Main;
6+
import com.elderdrivers.riru.edxp.yahfa.entry.hooker.XposedBlackListHooker;
7+
8+
public class YahfaEdxpConfig implements EdXpConfig {
9+
@Override
10+
public String getInstallerBaseDir() {
11+
return InstallerChooser.INSTALLER_DATA_BASE_DIR;
12+
}
13+
14+
@Override
15+
public String getBlackListModulePackageName() {
16+
return XposedBlackListHooker.BLACK_LIST_PACKAGE_NAME;
17+
}
18+
19+
@Override
20+
public boolean isDynamicModulesMode() {
21+
return Main.isDynamicModulesEnabled();
22+
}
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.elderdrivers.riru.edxp.yahfa.config;
2+
3+
import com.elderdrivers.riru.edxp.hook.HookProvider;
4+
import com.elderdrivers.riru.edxp.util.PrebuiltMethodsDeopter;
5+
import com.elderdrivers.riru.edxp.yahfa.dexmaker.DexMakerUtils;
6+
import com.elderdrivers.riru.edxp.yahfa.dexmaker.DynamicBridge;
7+
8+
import java.lang.reflect.InvocationTargetException;
9+
import java.lang.reflect.Member;
10+
11+
import de.robv.android.xposed.XposedBridge;
12+
13+
public class YahfaHookProvider implements HookProvider {
14+
@Override
15+
public void hookMethod(Member method, XposedBridge.AdditionalHookInfo additionalInfo) {
16+
DynamicBridge.hookMethod(method, additionalInfo);
17+
}
18+
19+
@Override
20+
public Object invokeOriginalMethod(Member method, Object thisObject, Object[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
21+
return DynamicBridge.invokeOriginalMethod(method, thisObject, args);
22+
}
23+
24+
@Override
25+
public Member findMethodNative(Member hookMethod) {
26+
return DexMakerUtils.findMethodNative(hookMethod);
27+
}
28+
29+
@Override
30+
public void deoptMethods(String packageName, ClassLoader classLoader) {
31+
PrebuiltMethodsDeopter.deoptMethods(packageName, classLoader);
32+
}
33+
}

Diff for: Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DexMakerUtils.java renamed to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DexMakerUtils.java

+16
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
import android.app.AndroidAppHelper;
44
import android.os.Build;
55
import android.text.TextUtils;
6+
import android.util.Log;
67

78
import com.elderdrivers.riru.edxp.yahfa.Main;
89
import com.elderdrivers.riru.edxp.config.ConfigManager;
10+
import com.elderdrivers.riru.edxp.yahfa.core.HookMain;
911

12+
import java.lang.reflect.Member;
1013
import java.security.MessageDigest;
1114
import java.util.HashMap;
1215
import java.util.Map;
@@ -243,4 +246,17 @@ public static String getSha1Hex(String text) {
243246
}
244247
return "";
245248
}
249+
250+
public static Member findMethodNative(Member hookMethod) {
251+
MethodInfo methodInfo = new MethodInfo(hookMethod);
252+
Class declaringClass = methodInfo.getClassForSure();
253+
Member reflectMethod = (Member) HookMain.findMethod(
254+
declaringClass, methodInfo.methodName, methodInfo.methodSig);
255+
if (reflectMethod == null) {
256+
DexLog.e("method not found: name="
257+
+ methodInfo.methodName + ", sig=" + methodInfo.methodSig);
258+
reflectMethod = hookMethod;
259+
}
260+
return reflectMethod;
261+
}
246262
}

0 commit comments

Comments
 (0)