From 8091edbffbacbf80eebe0ed646e6ec9f6aafe5be Mon Sep 17 00:00:00 2001 From: Narayan Kamath Date: Wed, 15 Oct 2014 11:38:44 +0100 Subject: [PATCH] Set threads' contextClassLoader during LoadedApk.makeApplication. We used to set this from LoadedApk.getClassLoader. This had the unfortunate side effect of clobbering the threads default classloader when Context.createPackageContext().getClassLoader() was called. This happens, for example, to every app that uses a updatable webview. bug: 17986934 Change-Id: If2b5938a19f836ea5fe60c94ea53a7125c2098c0 --- core/java/android/app/LoadedApk.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java index d143b8634531a..aa98e973855ce 100644 --- a/core/java/android/app/LoadedApk.java +++ b/core/java/android/app/LoadedApk.java @@ -360,7 +360,6 @@ public final class LoadedApk { mClassLoader = ApplicationLoaders.getDefault().getClassLoader(zip, lib, mBaseClassLoader); - initializeJavaContextClassLoader(); StrictMode.setThreadPolicy(oldPolicy); } else { @@ -552,6 +551,9 @@ public final class LoadedApk { try { java.lang.ClassLoader cl = getClassLoader(); + if (!mPackageName.equals("android")) { + initializeJavaContextClassLoader(); + } ContextImpl appContext = ContextImpl.createAppContext(mActivityThread, this); app = mActivityThread.mInstrumentation.newApplication( cl, appClass, appContext);