[core] Allow vdex speedup for InMemoryDex (#1260)
* [core] Allow vdex speedup for InMemoryDex * 1
This commit is contained in:
parent
4c4427ca52
commit
69900249c9
|
|
@ -189,6 +189,7 @@ namespace lspd {
|
||||||
jstring app_data_dir) {
|
jstring app_data_dir) {
|
||||||
Service::instance()->InitService(env);
|
Service::instance()->InitService(env);
|
||||||
const auto app_id = uid % PER_USER_RANGE;
|
const auto app_id = uid % PER_USER_RANGE;
|
||||||
|
app_data_dir_ = app_data_dir;
|
||||||
nice_name_ = nice_name;
|
nice_name_ = nice_name;
|
||||||
JUTFString process_name(env, nice_name);
|
JUTFString process_name(env, nice_name);
|
||||||
skip_ = !sym_initialized;
|
skip_ = !sym_initialized;
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ import android.app.ActivityThread;
|
||||||
import android.app.LoadedApk;
|
import android.app.LoadedApk;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.res.CompatibilityInfo;
|
import android.content.res.CompatibilityInfo;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
|
|
@ -45,6 +46,8 @@ import java.io.File;
|
||||||
import de.robv.android.xposed.XposedBridge;
|
import de.robv.android.xposed.XposedBridge;
|
||||||
import de.robv.android.xposed.XposedHelpers;
|
import de.robv.android.xposed.XposedHelpers;
|
||||||
import de.robv.android.xposed.XposedInit;
|
import de.robv.android.xposed.XposedInit;
|
||||||
|
import hidden.HiddenApiBridge;
|
||||||
|
import pxb.android.axml.Util;
|
||||||
|
|
||||||
public class Main {
|
public class Main {
|
||||||
public static void startBootstrapHook(boolean isSystem, String appDataDir) {
|
public static void startBootstrapHook(boolean isSystem, String appDataDir) {
|
||||||
|
|
@ -86,6 +89,10 @@ public class Main {
|
||||||
Utils.logI("Loaded manager, skipping next steps");
|
Utils.logI("Loaded manager, skipping next steps");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Utils.logD("appDataDir: " + appDataDir);
|
||||||
|
if (!isSystem && Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||||
|
HiddenApiBridge.VMRuntime_setProcessDataDirectory(appDataDir);
|
||||||
|
}
|
||||||
installBootstrapHooks(isSystem, appDataDir);
|
installBootstrapHooks(isSystem, appDataDir);
|
||||||
Utils.logI("Loading modules for " + niceName + "/" + Process.myUid());
|
Utils.logI("Loading modules for " + niceName + "/" + Process.myUid());
|
||||||
XposedInit.loadModules();
|
XposedInit.loadModules();
|
||||||
|
|
|
||||||
|
|
@ -22,5 +22,6 @@ plugins {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
compileOnly("androidx.annotation:annotation:1.2.0")
|
||||||
compileOnly(project(":hiddenapi-stubs"))
|
compileOnly(project(":hiddenapi-stubs"))
|
||||||
}
|
}
|
||||||
|
|
@ -35,8 +35,12 @@ import android.os.Handler;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
|
|
||||||
|
import androidx.annotation.RequiresApi;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
|
import dalvik.system.VMRuntime;
|
||||||
|
|
||||||
public class HiddenApiBridge {
|
public class HiddenApiBridge {
|
||||||
public static int AssetManager_addAssetPath(AssetManager am, String path) {
|
public static int AssetManager_addAssetPath(AssetManager am, String path) {
|
||||||
return am.addAssetPath(path);
|
return am.addAssetPath(path);
|
||||||
|
|
@ -91,4 +95,9 @@ public class HiddenApiBridge {
|
||||||
public static CompatibilityInfo Resources_getCompatibilityInfo(Resources res) {
|
public static CompatibilityInfo Resources_getCompatibilityInfo(Resources res) {
|
||||||
return res.getCompatibilityInfo();
|
return res.getCompatibilityInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresApi(29)
|
||||||
|
public static void VMRuntime_setProcessDataDirectory(String dataDir) {
|
||||||
|
VMRuntime.setProcessDataDirectory(dataDir);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package dalvik.system;
|
package dalvik.system;
|
||||||
|
|
||||||
|
import androidx.annotation.RequiresApi;
|
||||||
|
|
||||||
public class VMRuntime {
|
public class VMRuntime {
|
||||||
|
|
||||||
public static VMRuntime getRuntime() {
|
public static VMRuntime getRuntime() {
|
||||||
|
|
@ -9,4 +11,7 @@ public class VMRuntime {
|
||||||
public native boolean is64Bit();
|
public native boolean is64Bit();
|
||||||
|
|
||||||
public native String vmInstructionSet();
|
public native String vmInstructionSet();
|
||||||
|
|
||||||
|
@RequiresApi(29)
|
||||||
|
public static native void setProcessDataDirectory(String dataDir);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue