Merge "Move preloaded-classes out of framework.jar." into lmp-mr1-dev

This commit is contained in:
Ying Wang
2014-11-17 18:14:04 +00:00
committed by Android (Google) Code Review
2 changed files with 80 additions and 79 deletions

View File

@@ -402,9 +402,6 @@ LOCAL_DX_FLAGS := --core-library --multi-dex
LOCAL_RMTYPEDEFS := true LOCAL_RMTYPEDEFS := true
# List of classes and interfaces which should be loaded by the Zygote.
LOCAL_JAVA_RESOURCE_FILES += $(LOCAL_PATH)/preloaded-classes
include $(BUILD_JAVA_LIBRARY) include $(BUILD_JAVA_LIBRARY)
framework_module := $(LOCAL_INSTALLED_MODULE) framework_module := $(LOCAL_INSTALLED_MODULE)

View File

@@ -45,6 +45,8 @@ import libcore.io.IoUtils;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.FileDescriptor; import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
@@ -97,9 +99,9 @@ public class ZygoteInit {
static final int GC_LOOP_COUNT = 10; static final int GC_LOOP_COUNT = 10;
/** /**
* The name of a resource file that contains classes to preload. * The path of a file that contains classes to preload.
*/ */
private static final String PRELOADED_CLASSES = "preloaded-classes"; private static final String PRELOADED_CLASSES = "/system/etc/preloaded-classes";
/** Controls whether we should preload resources during zygote init. */ /** Controls whether we should preload resources during zygote init. */
private static final boolean PRELOAD_RESOURCES = true; private static final boolean PRELOAD_RESOURCES = true;
@@ -284,11 +286,14 @@ public class ZygoteInit {
private static void preloadClasses() { private static void preloadClasses() {
final VMRuntime runtime = VMRuntime.getRuntime(); final VMRuntime runtime = VMRuntime.getRuntime();
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream( InputStream is;
PRELOADED_CLASSES); try {
if (is == null) { is = new FileInputStream(PRELOADED_CLASSES);
} catch (FileNotFoundException e) {
Log.e(TAG, "Couldn't find " + PRELOADED_CLASSES + "."); Log.e(TAG, "Couldn't find " + PRELOADED_CLASSES + ".");
} else { return;
}
Log.i(TAG, "Preloading classes..."); Log.i(TAG, "Preloading classes...");
long startTime = SystemClock.uptimeMillis(); long startTime = SystemClock.uptimeMillis();
@@ -369,7 +374,6 @@ public class ZygoteInit {
setEffectiveGroup(ROOT_GID); setEffectiveGroup(ROOT_GID);
} }
} }
}
/** /**
* Load in commonly used resources, so they can be shared across * Load in commonly used resources, so they can be shared across