778ce48665
ActivityThread should try to set the value for Java Thread.getContextClassLoader to the PathClassLoader that loaded the APK's classes so that Java frameworks that use the Java context class loader, which is not to be confused with the android.content.Context.getClassLoader which serves a similar purpose in the Android framework. However, we avoid setting the Java context ClassLoader to the APK's PathClassLoader if there is a static indication that multiple packages may share the VM, since they could load in an unpredictable order leading to different values for the thread local Java context ClassLoader. In this case, we instead use a specially created WarningContextClassLoader that warns the user the first time the Java context ClassLoader. Currently the static indications that a package might share a VM with other packages are the presence in the AndroidManifest of a sharedUserId or requesting a non-default application process name.