Support Android 12
This commit is contained in:
parent
99c7f72665
commit
dc0c63e857
|
|
@ -19,7 +19,6 @@ import android.os.IBinder;
|
|||
import android.os.Parcel;
|
||||
import android.os.RemoteException;
|
||||
import android.system.Os;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.Log;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
|
|
@ -47,6 +46,7 @@ import java.nio.file.attribute.PosixFilePermissions;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.zip.ZipFile;
|
||||
|
||||
import de.robv.android.xposed.XC_MethodHook;
|
||||
|
|
@ -62,6 +62,7 @@ public class LSPApplication extends ApplicationServiceClient {
|
|||
private static final String TAG = "LSPatch";
|
||||
|
||||
private static ActivityThread activityThread;
|
||||
private static LoadedApk stubLoadedApk;
|
||||
private static LoadedApk appLoadedApk;
|
||||
|
||||
private static PatchConfig config;
|
||||
|
|
@ -109,6 +110,10 @@ public class LSPApplication extends ApplicationServiceClient {
|
|||
// before forkPostCommon is invoke. Otherwise, you will get failure of XResources
|
||||
LSPLoader.initModules(appLoadedApk);
|
||||
Log.i(TAG, "Modules initialized");
|
||||
|
||||
switchClassLoader("mBaseClassLoader");
|
||||
switchClassLoader("mDefaultClassLoader");
|
||||
switchClassLoader("mClassLoader");
|
||||
} catch (Throwable e) {
|
||||
Log.e(TAG, "Do hook", e);
|
||||
}
|
||||
|
|
@ -117,7 +122,8 @@ public class LSPApplication extends ApplicationServiceClient {
|
|||
private static Context createLoadedApkWithContext() {
|
||||
try {
|
||||
var mBoundApplication = XposedHelpers.getObjectField(activityThread, "mBoundApplication");
|
||||
var stubLoadedApk = (LoadedApk) XposedHelpers.getObjectField(mBoundApplication, "info");
|
||||
|
||||
stubLoadedApk = (LoadedApk) XposedHelpers.getObjectField(mBoundApplication, "info");
|
||||
var appInfo = (ApplicationInfo) XposedHelpers.getObjectField(mBoundApplication, "appInfo");
|
||||
var compatInfo = (CompatibilityInfo) XposedHelpers.getObjectField(mBoundApplication, "compatInfo");
|
||||
var baseClassLoader = stubLoadedApk.getClassLoader();
|
||||
|
|
@ -151,7 +157,7 @@ public class LSPApplication extends ApplicationServiceClient {
|
|||
}
|
||||
}
|
||||
|
||||
var mPackages = (ArrayMap<?, ?>) XposedHelpers.getObjectField(activityThread, "mPackages");
|
||||
var mPackages = (Map<?, ?>) XposedHelpers.getObjectField(activityThread, "mPackages");
|
||||
mPackages.remove(appInfo.packageName);
|
||||
appLoadedApk = activityThread.getPackageInfoNoCheck(appInfo, compatInfo);
|
||||
XposedHelpers.setObjectField(mBoundApplication, "info", appLoadedApk);
|
||||
|
|
@ -339,6 +345,11 @@ public class LSPApplication extends ApplicationServiceClient {
|
|||
}
|
||||
}
|
||||
|
||||
private static void switchClassLoader(String fieldName) {
|
||||
var obj = XposedHelpers.getObjectField(appLoadedApk, fieldName);
|
||||
XposedHelpers.setObjectField(stubLoadedApk, fieldName, obj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBinder requestModuleBinder(String name) {
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ buildscript {
|
|||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:7.1.0-alpha13'
|
||||
classpath 'com.android.tools.build:gradle:7.1.0-beta02'
|
||||
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31'
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -187,7 +187,7 @@ public class LSPatch {
|
|||
}
|
||||
var entry = (KeyStore.PrivateKeyEntry) keyStore.getEntry("key0", new KeyStore.PasswordProtection("123456".toCharArray()));
|
||||
new SigningExtension(SigningOptions.builder()
|
||||
.setMinSdkVersion(27)
|
||||
.setMinSdkVersion(28)
|
||||
.setV1SigningEnabled(v1)
|
||||
.setV2SigningEnabled(v2)
|
||||
.setCertificates((X509Certificate[]) entry.getCertificateChain())
|
||||
|
|
|
|||
Loading…
Reference in New Issue