Instant modules: allow black/white mode to preload modules
This commit is contained in:
parent
1df3d88c13
commit
d06cb1ffbd
|
|
@ -1,4 +1,4 @@
|
|||
version: '0.4.5.2_beta({build})'
|
||||
version: '0.4.5.3_beta({build})'
|
||||
|
||||
environment:
|
||||
ANDROID_HOME: C:\android-sdk-windows
|
||||
|
|
|
|||
|
|
@ -43,11 +43,10 @@ public class BlackWhiteListProxy extends BaseProxy {
|
|||
String appDataDir) {
|
||||
final boolean isDynamicModulesMode = ConfigManager.isDynamicModulesEnabled();
|
||||
if (isDynamicModulesMode) {
|
||||
// should never happen
|
||||
return;
|
||||
onForkPreForDynamicMode(false);
|
||||
} else {
|
||||
onForkPreForNonDynamicMode(false);
|
||||
}
|
||||
// only enter here when isDynamicModulesMode is off
|
||||
onForkPreForNonDynamicMode(false);
|
||||
}
|
||||
|
||||
public void forkAndSpecializePost(int pid, String appDataDir, String niceName) {
|
||||
|
|
@ -59,17 +58,23 @@ public class BlackWhiteListProxy extends BaseProxy {
|
|||
long effectiveCapabilities) {
|
||||
final boolean isDynamicModulesMode = ConfigManager.isDynamicModulesEnabled();
|
||||
if (isDynamicModulesMode) {
|
||||
// should never happen
|
||||
return;
|
||||
onForkPreForDynamicMode(true);
|
||||
} else {
|
||||
onForkPreForNonDynamicMode(true);
|
||||
}
|
||||
// only enter here when isDynamicModulesMode is off
|
||||
onForkPreForNonDynamicMode(true);
|
||||
}
|
||||
|
||||
public void forkSystemServerPost(int pid) {
|
||||
onForkPostCommon(true, getDataPathPrefix() + "android", "system_server");
|
||||
}
|
||||
|
||||
private void onForkPreForDynamicMode(boolean isSystemServer) {
|
||||
mRouter.onForkStart();
|
||||
mRouter.initResourcesHook();
|
||||
mRouter.prepare(isSystemServer);
|
||||
mRouter.loadModulesSafely(true, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Some details are different between main zygote and secondary zygote.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import org.gradle.internal.os.OperatingSystem
|
|||
apply plugin: 'com.android.library'
|
||||
|
||||
// Values set here will be overriden by AppVeyor, feel free to modify during development.
|
||||
def buildVersionName = 'v0.4.5.2_beta'
|
||||
def buildVersionName = 'v0.4.5.3_beta'
|
||||
def buildVersionCode = 10000
|
||||
|
||||
if (System.env.APPVEYOR_BUILD_VERSION != null) {
|
||||
|
|
|
|||
|
|
@ -233,12 +233,6 @@ namespace edxp {
|
|||
jlong permitted_capabilities,
|
||||
jlong effective_capabilities) {
|
||||
app_data_dir_ = env->NewStringUTF(SYSTEM_SERVER_DATA_DIR);
|
||||
bool is_black_white_list_mode = ConfigManager::GetInstance()->IsBlackWhiteListEnabled();
|
||||
bool is_dynamic_modules_mode = ConfigManager::GetInstance()->IsDynamicModulesEnabled();
|
||||
if (is_black_white_list_mode && is_dynamic_modules_mode) {
|
||||
// when black/white list is on, never inject into zygote if dynamic modules mode is on
|
||||
return;
|
||||
}
|
||||
PrepareJavaEnv(env);
|
||||
// jump to java code
|
||||
FindAndCall(env, "forkSystemServerPre", "(II[II[[IJJ)V", uid, gid, gids, runtime_flags,
|
||||
|
|
@ -273,11 +267,6 @@ namespace edxp {
|
|||
jstring app_data_dir) {
|
||||
app_data_dir_ = app_data_dir;
|
||||
nice_name_ = nice_name;
|
||||
if (ConfigManager::GetInstance()->IsBlackWhiteListEnabled() &&
|
||||
ConfigManager::GetInstance()->IsDynamicModulesEnabled()) {
|
||||
// when black/white list is on, never inject into zygote if dynamic modules mode is on
|
||||
return;
|
||||
}
|
||||
PrepareJavaEnv(env);
|
||||
FindAndCall(env, "forkAndSpecializePre",
|
||||
"(II[II[[IILjava/lang/String;Ljava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;)V",
|
||||
|
|
|
|||
Loading…
Reference in New Issue