diff options
| author | 2018-03-02 11:20:31 -0500 | |
|---|---|---|
| committer | 2018-03-02 11:20:31 -0500 | |
| commit | 6ee51bb6d6ed587b0dcaf136ba299bcf075b4a13 (patch) | |
| tree | 8701cef76e3fb9ebe969b98da73d7e8aa7c3692e | |
| parent | 3eef2efe40d9c783a74174b929535a2569424af1 (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.java | 5 |
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. |