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