[core] Allow vdex speedup for InMemoryDex (#1260)

* [core] Allow vdex speedup for InMemoryDex

* 1
This commit is contained in:
LoveSy 2021-10-12 19:22:54 +08:00 committed by GitHub
parent 4c4427ca52
commit 69900249c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 1 deletions

View File

@ -189,6 +189,7 @@ namespace lspd {
jstring app_data_dir) {
Service::instance()->InitService(env);
const auto app_id = uid % PER_USER_RANGE;
app_data_dir_ = app_data_dir;
nice_name_ = nice_name;
JUTFString process_name(env, nice_name);
skip_ = !sym_initialized;

View File

@ -24,6 +24,7 @@ import android.app.ActivityThread;
import android.app.LoadedApk;
import android.content.pm.ApplicationInfo;
import android.content.res.CompatibilityInfo;
import android.os.Build;
import android.os.Environment;
import android.os.IBinder;
import android.os.Process;
@ -45,6 +46,8 @@ import java.io.File;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.XposedInit;
import hidden.HiddenApiBridge;
import pxb.android.axml.Util;
public class Main {
public static void startBootstrapHook(boolean isSystem, String appDataDir) {
@ -86,6 +89,10 @@ public class Main {
Utils.logI("Loaded manager, skipping next steps");
return;
}
Utils.logD("appDataDir: " + appDataDir);
if (!isSystem && Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
HiddenApiBridge.VMRuntime_setProcessDataDirectory(appDataDir);
}
installBootstrapHooks(isSystem, appDataDir);
Utils.logI("Loading modules for " + niceName + "/" + Process.myUid());
XposedInit.loadModules();

View File

@ -22,5 +22,6 @@ plugins {
}
dependencies {
compileOnly("androidx.annotation:annotation:1.2.0")
compileOnly(project(":hiddenapi-stubs"))
}

View File

@ -35,8 +35,12 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.UserHandle;
import androidx.annotation.RequiresApi;
import java.io.File;
import dalvik.system.VMRuntime;
public class HiddenApiBridge {
public static int AssetManager_addAssetPath(AssetManager am, String path) {
return am.addAssetPath(path);
@ -91,4 +95,9 @@ public class HiddenApiBridge {
public static CompatibilityInfo Resources_getCompatibilityInfo(Resources res) {
return res.getCompatibilityInfo();
}
@RequiresApi(29)
public static void VMRuntime_setProcessDataDirectory(String dataDir) {
VMRuntime.setProcessDataDirectory(dataDir);
}
}

View File

@ -1,5 +1,7 @@
package dalvik.system;
import androidx.annotation.RequiresApi;
public class VMRuntime {
public static VMRuntime getRuntime() {
@ -9,4 +11,7 @@ public class VMRuntime {
public native boolean is64Bit();
public native String vmInstructionSet();
@RequiresApi(29)
public static native void setProcessDataDirectory(String dataDir);
}