&dex_path);
+ void PreLoadDex(const std::filesystem::path &dex_paths);
void InjectDexAndInit(JNIEnv *env);
diff --git a/edxp-core/src/main/java/android/app/AndroidAppHelper.java b/edxp-core/src/main/java/android/app/AndroidAppHelper.java
new file mode 100644
index 00000000..c9160c5a
--- /dev/null
+++ b/edxp-core/src/main/java/android/app/AndroidAppHelper.java
@@ -0,0 +1,223 @@
+package android.app;
+
+import android.content.SharedPreferences;
+import android.content.pm.ApplicationInfo;
+import android.content.res.CompatibilityInfo;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.os.Build;
+import android.os.IBinder;
+import android.view.Display;
+
+import java.lang.ref.WeakReference;
+import java.util.Map;
+
+import de.robv.android.xposed.XSharedPreferences;
+import de.robv.android.xposed.XposedBridge;
+
+import static de.robv.android.xposed.XposedHelpers.findClass;
+import static de.robv.android.xposed.XposedHelpers.findFieldIfExists;
+import static de.robv.android.xposed.XposedHelpers.findMethodExactIfExists;
+import static de.robv.android.xposed.XposedHelpers.getObjectField;
+import static de.robv.android.xposed.XposedHelpers.newInstance;
+import static de.robv.android.xposed.XposedHelpers.setFloatField;
+
+/**
+ * Contains various methods for information about the current app.
+ *
+ * For historical reasons, this class is in the {@code android.app} package. It can't be moved
+ * without breaking compatibility with existing modules.
+ */
+public final class AndroidAppHelper {
+ private AndroidAppHelper() {}
+
+ private static final Class> CLASS_RESOURCES_KEY;
+ private static final boolean HAS_IS_THEMEABLE;
+ private static final boolean HAS_THEME_CONFIG_PARAMETER;
+
+ static {
+ CLASS_RESOURCES_KEY = (Build.VERSION.SDK_INT < 19) ?
+ findClass("android.app.ActivityThread$ResourcesKey", null)
+ : findClass("android.content.res.ResourcesKey", null);
+
+ HAS_IS_THEMEABLE = findFieldIfExists(CLASS_RESOURCES_KEY, "mIsThemeable") != null;
+ HAS_THEME_CONFIG_PARAMETER = HAS_IS_THEMEABLE && Build.VERSION.SDK_INT >= 21
+ && findMethodExactIfExists("android.app.ResourcesManager", null, "getThemeConfig") != null;
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ private static Map