summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jason Monk <jmonk@google.com> 2018-03-02 11:20:31 -0500
committer Jason Monk <jmonk@google.com> 2018-03-02 11:20:31 -0500
commit6ee51bb6d6ed587b0dcaf136ba299bcf075b4a13 (patch)
tree8701cef76e3fb9ebe969b98da73d7e8aa7c3692e
parent3eef2efe40d9c783a74174b929535a2569424af1 (diff)
Fix crash with AppComponentFactory
Allow for a null classloader, but make sure we recrete if the classloader changes later. Test: Added CTS Change-Id: Ibea54d7e03acd5201d81b2261bab0739020de12d Fixes: 74089652
-rw-r--r--core/java/android/app/LoadedApk.java5
1 files changed, 4 insertions, 1 deletions
diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java
index ea5932cd4ae4..fc7d9a553e31 100644
--- a/core/java/android/app/LoadedApk.java
+++ b/core/java/android/app/LoadedApk.java
@@ -219,7 +219,7 @@ public final class LoadedApk {
}
private AppComponentFactory createAppFactory(ApplicationInfo appInfo, ClassLoader cl) {
- if (appInfo.appComponentFactory != null) {
+ if (appInfo.appComponentFactory != null && cl != null) {
try {
return (AppComponentFactory) cl.loadClass(appInfo.appComponentFactory)
.newInstance();
@@ -613,6 +613,7 @@ public final class LoadedApk {
} else {
mClassLoader = ClassLoader.getSystemClassLoader();
}
+ mAppComponentFactory = createAppFactory(mApplicationInfo, mClassLoader);
return;
}
@@ -687,6 +688,7 @@ public final class LoadedApk {
librarySearchPath, libraryPermittedPath, mBaseClassLoader,
null /* classLoaderName */);
StrictMode.setThreadPolicy(oldPolicy);
+ mAppComponentFactory = createAppFactory(mApplicationInfo, mClassLoader);
}
return;
@@ -714,6 +716,7 @@ public final class LoadedApk {
mApplicationInfo.targetSdkVersion, isBundledApp, librarySearchPath,
libraryPermittedPath, mBaseClassLoader,
mApplicationInfo.classLoaderName);
+ mAppComponentFactory = createAppFactory(mApplicationInfo, mClassLoader);
StrictMode.setThreadPolicy(oldPolicy);
// Setup the class loader paths for profiling.