Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ee51bb6 authored by Jason Monk's avatar Jason Monk
Browse files

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
parent 3eef2efe
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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.