summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNarayan Kamath <narayan@google.com>2014-10-15 11:38:44 +0100
committerNarayan Kamath <narayan@google.com>2014-10-15 11:38:44 +0100
commit8091edbffbacbf80eebe0ed646e6ec9f6aafe5be (patch)
treed73669a586dd8222897b355e5af8ea012c2235cc
parent5873c3e862b83fb0c64b52b86bdd8f26ff8ffb5f (diff)
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
-rw-r--r--core/java/android/app/LoadedApk.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java
index d143b8634531..aa98e973855c 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);