Loading core/java/android/os/ZygoteProcess.java +0 −34 Original line number Diff line number Diff line Loading @@ -1102,7 +1102,6 @@ public class ZygoteProcess { /** * Instructs the zygote to pre-load the application code for the given Application. * Only the app zygote supports this function. * TODO preloadPackageForAbi() can probably be removed and the callers an use this instead. */ public boolean preloadApp(ApplicationInfo appInfo, String abi) throws ZygoteStartFailedEx, IOException { Loading @@ -1129,39 +1128,6 @@ public class ZygoteProcess { } } /** * Instructs the zygote to pre-load the classes and native libraries at the given paths * for the specified abi. Not all zygotes support this function. */ public boolean preloadPackageForAbi( String packagePath, String libsPath, String libFileName, String cacheKey, String abi) throws ZygoteStartFailedEx, IOException { synchronized (mLock) { ZygoteState state = openZygoteSocketIfNeeded(abi); state.mZygoteOutputWriter.write("5"); state.mZygoteOutputWriter.newLine(); state.mZygoteOutputWriter.write("--preload-package"); state.mZygoteOutputWriter.newLine(); state.mZygoteOutputWriter.write(packagePath); state.mZygoteOutputWriter.newLine(); state.mZygoteOutputWriter.write(libsPath); state.mZygoteOutputWriter.newLine(); state.mZygoteOutputWriter.write(libFileName); state.mZygoteOutputWriter.newLine(); state.mZygoteOutputWriter.write(cacheKey); state.mZygoteOutputWriter.newLine(); state.mZygoteOutputWriter.flush(); return (state.mZygoteInputStream.readInt() == 0); } } /** * Instructs the zygote to preload the default set of classes and resources. Returns * {@code true} if a preload was performed as a result of this call, and {@code false} Loading core/java/com/android/internal/os/WebViewZygoteInit.java +0 −25 Original line number Diff line number Diff line Loading @@ -16,18 +16,15 @@ package com.android.internal.os; import android.app.ApplicationLoaders; import android.app.LoadedApk; import android.content.pm.ApplicationInfo; import android.net.LocalSocket; import android.text.TextUtils; import android.util.Log; import android.webkit.WebViewFactory; import android.webkit.WebViewFactoryProvider; import android.webkit.WebViewLibraryLoader; import java.io.DataOutputStream; import java.io.File; import java.io.IOException; import java.lang.reflect.Method; Loading Loading @@ -83,28 +80,6 @@ class WebViewZygoteInit { Log.i(TAG, "Application preload done"); } @Override protected void handlePreloadPackage(String packagePath, String libsPath, String libFileName, String cacheKey) { Log.i(TAG, "Beginning package preload"); // Ask ApplicationLoaders to create and cache a classloader for the WebView APK so that // our children will reuse the same classloader instead of creating their own. // This enables us to preload Java and native code in the webview zygote process and // have the preloaded versions actually be used post-fork. ClassLoader loader = ApplicationLoaders.getDefault().createAndCacheWebViewClassLoader( packagePath, libsPath, cacheKey); // Add the APK to the Zygote's list of allowed files for children. String[] packageList = TextUtils.split(packagePath, File.pathSeparator); for (String packageEntry : packageList) { Zygote.nativeAllowFileAcrossFork(packageEntry); } doPreload(loader, libFileName); Log.i(TAG, "Package preload done"); } private void doPreload(ClassLoader loader, String libFileName) { // Load the native library using WebViewLibraryLoader to share the RELRO data with other // processes. Loading core/java/com/android/internal/os/Zygote.java +0 −2 Original line number Diff line number Diff line Loading @@ -938,8 +938,6 @@ public final class Zygote { throw new IllegalArgumentException(USAP_ERROR_PREFIX + "--get-pid"); } else if (args.mPreloadDefault) { throw new IllegalArgumentException(USAP_ERROR_PREFIX + "--preload-default"); } else if (args.mPreloadPackage != null) { throw new IllegalArgumentException(USAP_ERROR_PREFIX + "--preload-package"); } else if (args.mPreloadApp != null) { throw new IllegalArgumentException(USAP_ERROR_PREFIX + "--preload-app"); } else if (args.mStartChildZygote) { Loading core/java/com/android/internal/os/ZygoteArguments.java +0 −32 Original line number Diff line number Diff line Loading @@ -140,33 +140,12 @@ class ZygoteArguments { */ String mAppDataDir; /** * The APK path of the package to preload, when using --preload-package. */ String mPreloadPackage; /** * A Base64 string representing a serialize ApplicationInfo Parcel, when using --preload-app. */ String mPreloadApp; /** * The native library path of the package to preload, when using --preload-package. */ String mPreloadPackageLibs; /** * The filename of the native library to preload, when using --preload-package. */ String mPreloadPackageLibFileName; /** * The cache key under which to enter the preloaded package into the classloader cache, when * using --preload-package. */ String mPreloadPackageCacheKey; /** * Whether this is a request to start preloading the default resources and classes. This * argument only makes sense when the zygote is in lazy preload mode (i.e, when it's started Loading Loading @@ -419,12 +398,6 @@ class ZygoteArguments { } else if (arg.equals("--preload-app")) { ++curArg; mPreloadApp = args.nextArg(); } else if (arg.equals("--preload-package")) { curArg += 4; mPreloadPackage = args.nextArg(); mPreloadPackageLibs = args.nextArg(); mPreloadPackageLibFileName = args.nextArg(); mPreloadPackageCacheKey = args.nextArg(); } else if (arg.equals("--preload-default")) { mPreloadDefault = true; expectRuntimeArgs = false; Loading Loading @@ -504,11 +477,6 @@ class ZygoteArguments { if (argCount > curArg) { throw new IllegalArgumentException("Unexpected arguments after --query-abi-list."); } } else if (mPreloadPackage != null) { if (argCount > curArg) { throw new IllegalArgumentException( "Unexpected arguments after --preload-package."); } } else if (mPreloadApp != null) { if (argCount > curArg) { throw new IllegalArgumentException( Loading core/java/com/android/internal/os/ZygoteConnection.java +0 −13 Original line number Diff line number Diff line Loading @@ -165,14 +165,6 @@ class ZygoteConnection { return null; } if (parsedArgs.mPreloadPackage != null) { handlePreloadPackage(parsedArgs.mPreloadPackage, parsedArgs.mPreloadPackageLibs, parsedArgs.mPreloadPackageLibFileName, parsedArgs.mPreloadPackageCacheKey); return null; } if (canPreloadApp() && parsedArgs.mPreloadApp != null) { byte[] rawParcelData = Base64.getDecoder().decode(parsedArgs.mPreloadApp); Parcel appInfoParcel = Parcel.obtain(); Loading Loading @@ -475,11 +467,6 @@ class ZygoteConnection { return mSocketOutStream; } protected void handlePreloadPackage(String packagePath, String libsPath, String libFileName, String cacheKey) { throw new RuntimeException("Zygote does not support package preloading"); } protected boolean canPreloadApp() { return false; } Loading Loading
core/java/android/os/ZygoteProcess.java +0 −34 Original line number Diff line number Diff line Loading @@ -1102,7 +1102,6 @@ public class ZygoteProcess { /** * Instructs the zygote to pre-load the application code for the given Application. * Only the app zygote supports this function. * TODO preloadPackageForAbi() can probably be removed and the callers an use this instead. */ public boolean preloadApp(ApplicationInfo appInfo, String abi) throws ZygoteStartFailedEx, IOException { Loading @@ -1129,39 +1128,6 @@ public class ZygoteProcess { } } /** * Instructs the zygote to pre-load the classes and native libraries at the given paths * for the specified abi. Not all zygotes support this function. */ public boolean preloadPackageForAbi( String packagePath, String libsPath, String libFileName, String cacheKey, String abi) throws ZygoteStartFailedEx, IOException { synchronized (mLock) { ZygoteState state = openZygoteSocketIfNeeded(abi); state.mZygoteOutputWriter.write("5"); state.mZygoteOutputWriter.newLine(); state.mZygoteOutputWriter.write("--preload-package"); state.mZygoteOutputWriter.newLine(); state.mZygoteOutputWriter.write(packagePath); state.mZygoteOutputWriter.newLine(); state.mZygoteOutputWriter.write(libsPath); state.mZygoteOutputWriter.newLine(); state.mZygoteOutputWriter.write(libFileName); state.mZygoteOutputWriter.newLine(); state.mZygoteOutputWriter.write(cacheKey); state.mZygoteOutputWriter.newLine(); state.mZygoteOutputWriter.flush(); return (state.mZygoteInputStream.readInt() == 0); } } /** * Instructs the zygote to preload the default set of classes and resources. Returns * {@code true} if a preload was performed as a result of this call, and {@code false} Loading
core/java/com/android/internal/os/WebViewZygoteInit.java +0 −25 Original line number Diff line number Diff line Loading @@ -16,18 +16,15 @@ package com.android.internal.os; import android.app.ApplicationLoaders; import android.app.LoadedApk; import android.content.pm.ApplicationInfo; import android.net.LocalSocket; import android.text.TextUtils; import android.util.Log; import android.webkit.WebViewFactory; import android.webkit.WebViewFactoryProvider; import android.webkit.WebViewLibraryLoader; import java.io.DataOutputStream; import java.io.File; import java.io.IOException; import java.lang.reflect.Method; Loading Loading @@ -83,28 +80,6 @@ class WebViewZygoteInit { Log.i(TAG, "Application preload done"); } @Override protected void handlePreloadPackage(String packagePath, String libsPath, String libFileName, String cacheKey) { Log.i(TAG, "Beginning package preload"); // Ask ApplicationLoaders to create and cache a classloader for the WebView APK so that // our children will reuse the same classloader instead of creating their own. // This enables us to preload Java and native code in the webview zygote process and // have the preloaded versions actually be used post-fork. ClassLoader loader = ApplicationLoaders.getDefault().createAndCacheWebViewClassLoader( packagePath, libsPath, cacheKey); // Add the APK to the Zygote's list of allowed files for children. String[] packageList = TextUtils.split(packagePath, File.pathSeparator); for (String packageEntry : packageList) { Zygote.nativeAllowFileAcrossFork(packageEntry); } doPreload(loader, libFileName); Log.i(TAG, "Package preload done"); } private void doPreload(ClassLoader loader, String libFileName) { // Load the native library using WebViewLibraryLoader to share the RELRO data with other // processes. Loading
core/java/com/android/internal/os/Zygote.java +0 −2 Original line number Diff line number Diff line Loading @@ -938,8 +938,6 @@ public final class Zygote { throw new IllegalArgumentException(USAP_ERROR_PREFIX + "--get-pid"); } else if (args.mPreloadDefault) { throw new IllegalArgumentException(USAP_ERROR_PREFIX + "--preload-default"); } else if (args.mPreloadPackage != null) { throw new IllegalArgumentException(USAP_ERROR_PREFIX + "--preload-package"); } else if (args.mPreloadApp != null) { throw new IllegalArgumentException(USAP_ERROR_PREFIX + "--preload-app"); } else if (args.mStartChildZygote) { Loading
core/java/com/android/internal/os/ZygoteArguments.java +0 −32 Original line number Diff line number Diff line Loading @@ -140,33 +140,12 @@ class ZygoteArguments { */ String mAppDataDir; /** * The APK path of the package to preload, when using --preload-package. */ String mPreloadPackage; /** * A Base64 string representing a serialize ApplicationInfo Parcel, when using --preload-app. */ String mPreloadApp; /** * The native library path of the package to preload, when using --preload-package. */ String mPreloadPackageLibs; /** * The filename of the native library to preload, when using --preload-package. */ String mPreloadPackageLibFileName; /** * The cache key under which to enter the preloaded package into the classloader cache, when * using --preload-package. */ String mPreloadPackageCacheKey; /** * Whether this is a request to start preloading the default resources and classes. This * argument only makes sense when the zygote is in lazy preload mode (i.e, when it's started Loading Loading @@ -419,12 +398,6 @@ class ZygoteArguments { } else if (arg.equals("--preload-app")) { ++curArg; mPreloadApp = args.nextArg(); } else if (arg.equals("--preload-package")) { curArg += 4; mPreloadPackage = args.nextArg(); mPreloadPackageLibs = args.nextArg(); mPreloadPackageLibFileName = args.nextArg(); mPreloadPackageCacheKey = args.nextArg(); } else if (arg.equals("--preload-default")) { mPreloadDefault = true; expectRuntimeArgs = false; Loading Loading @@ -504,11 +477,6 @@ class ZygoteArguments { if (argCount > curArg) { throw new IllegalArgumentException("Unexpected arguments after --query-abi-list."); } } else if (mPreloadPackage != null) { if (argCount > curArg) { throw new IllegalArgumentException( "Unexpected arguments after --preload-package."); } } else if (mPreloadApp != null) { if (argCount > curArg) { throw new IllegalArgumentException( Loading
core/java/com/android/internal/os/ZygoteConnection.java +0 −13 Original line number Diff line number Diff line Loading @@ -165,14 +165,6 @@ class ZygoteConnection { return null; } if (parsedArgs.mPreloadPackage != null) { handlePreloadPackage(parsedArgs.mPreloadPackage, parsedArgs.mPreloadPackageLibs, parsedArgs.mPreloadPackageLibFileName, parsedArgs.mPreloadPackageCacheKey); return null; } if (canPreloadApp() && parsedArgs.mPreloadApp != null) { byte[] rawParcelData = Base64.getDecoder().decode(parsedArgs.mPreloadApp); Parcel appInfoParcel = Parcel.obtain(); Loading Loading @@ -475,11 +467,6 @@ class ZygoteConnection { return mSocketOutStream; } protected void handlePreloadPackage(String packagePath, String libsPath, String libFileName, String cacheKey) { throw new RuntimeException("Zygote does not support package preloading"); } protected boolean canPreloadApp() { return false; } Loading