mirror of
https://github.com/topjohnwu/Magisk
synced 2024-11-13 20:54:12 +01:00
parent
65eca31635
commit
a2ddf362d8
@ -11,10 +11,8 @@
|
||||
|
||||
<application
|
||||
android:name="a.e"
|
||||
android:appComponentFactory="a.a"
|
||||
android:allowBackup="true"
|
||||
tools:ignore="UnusedAttribute,GoogleAppIndexingWarning"
|
||||
tools:replace="android:appComponentFactory">
|
||||
tools:ignore="UnusedAttribute,GoogleAppIndexingWarning">
|
||||
|
||||
<!-- Splash -->
|
||||
<activity
|
||||
|
@ -1,11 +1,9 @@
|
||||
package a;
|
||||
|
||||
import androidx.core.app.AppComponentFactory;
|
||||
|
||||
import com.topjohnwu.magisk.utils.PatchAPK;
|
||||
import com.topjohnwu.signing.BootSigner;
|
||||
|
||||
public class a extends AppComponentFactory {
|
||||
public class a {
|
||||
|
||||
@Deprecated
|
||||
public static boolean patchAPK(String in, String out, String pkg) {
|
||||
|
@ -50,7 +50,7 @@ fun Context.wrapJob(): Context = object : GlobalResContext(this) {
|
||||
|
||||
fun Class<*>.cmp(pkg: String): ComponentName {
|
||||
val name = ClassMap[this].name
|
||||
return ComponentName(pkg, Info.stub?.componentMap?.get(name) ?: name)
|
||||
return ComponentName(pkg, Info.stub?.classToComponent?.get(name) ?: name)
|
||||
}
|
||||
|
||||
inline fun <reified T> Context.intent() = Intent().setComponent(T::class.java.cmp(packageName))
|
||||
@ -131,7 +131,7 @@ private class JobSchedulerWrapper(private val base: JobScheduler) : JobScheduler
|
||||
val name = service.className
|
||||
val component = ComponentName(
|
||||
service.packageName,
|
||||
Info.stub!!.componentMap[name] ?: name)
|
||||
Info.stub!!.classToComponent[name] ?: name)
|
||||
|
||||
// Clone the JobInfo except component
|
||||
val builder = JobInfo.Builder(id, component)
|
||||
|
@ -15,7 +15,7 @@ public class DynAPK {
|
||||
|
||||
// Indices of the object array
|
||||
private static final int STUB_VERSION_ENTRY = 0;
|
||||
private static final int COMPONENT_MAP = 1;
|
||||
private static final int CLASS_COMPONENT_MAP = 1;
|
||||
|
||||
private static File dynDir;
|
||||
private static Method addAssetPath;
|
||||
@ -44,14 +44,14 @@ public class DynAPK {
|
||||
Object[] arr = (Object[]) o;
|
||||
Data data = new Data();
|
||||
data.version = (int) arr[STUB_VERSION_ENTRY];
|
||||
data.componentMap = (Map<String, String>) arr[COMPONENT_MAP];
|
||||
data.classToComponent = (Map<String, String>) arr[CLASS_COMPONENT_MAP];
|
||||
return data;
|
||||
}
|
||||
|
||||
public static Object pack(Data data) {
|
||||
Object[] arr = new Object[2];
|
||||
arr[STUB_VERSION_ENTRY] = data.version;
|
||||
arr[COMPONENT_MAP] = data.componentMap;
|
||||
arr[CLASS_COMPONENT_MAP] = data.classToComponent;
|
||||
return arr;
|
||||
}
|
||||
|
||||
@ -65,6 +65,6 @@ public class DynAPK {
|
||||
|
||||
public static class Data {
|
||||
public int version = STUB_VERSION;
|
||||
public Map<String, String> componentMap;
|
||||
public Map<String, String> classToComponent;
|
||||
}
|
||||
}
|
||||
|
@ -19,12 +19,12 @@ public class DelegateApplication extends Application {
|
||||
|
||||
static File MANAGER_APK;
|
||||
|
||||
private Object factory;
|
||||
private DelegateComponentFactory factory;
|
||||
private Application delegate;
|
||||
|
||||
public DelegateApplication() {}
|
||||
|
||||
public DelegateApplication(Object o) {
|
||||
public DelegateApplication(DelegateComponentFactory o) {
|
||||
factory = o;
|
||||
}
|
||||
|
||||
@ -46,7 +46,6 @@ public class DelegateApplication extends Application {
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
private void setUpDynAPK() {
|
||||
DelegateComponentFactory factory = (DelegateComponentFactory) this.factory;
|
||||
MANAGER_APK = DynAPK.current(this);
|
||||
File update = DynAPK.update(this);
|
||||
if (update.exists())
|
||||
@ -55,7 +54,8 @@ public class DelegateApplication extends Application {
|
||||
ClassLoader cl = new DynamicClassLoader(MANAGER_APK, factory.loader);
|
||||
try {
|
||||
// Create the delegate AppComponentFactory
|
||||
AppComponentFactory df = (AppComponentFactory) cl.loadClass("a.a").newInstance();
|
||||
AppComponentFactory df = (AppComponentFactory)
|
||||
cl.loadClass("androidx.core.app.CoreComponentFactory").newInstance();
|
||||
|
||||
// Create the delegate Application
|
||||
delegate = (Application) cl.loadClass("a.e").getConstructor(Object.class)
|
||||
|
@ -29,8 +29,7 @@ public class Mapping {
|
||||
|
||||
public static Data data() {
|
||||
Data data = new Data();
|
||||
data.componentMap = inverseMap;
|
||||
data.classToComponent = inverseMap;
|
||||
return data;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user