From cfc8da11f667171e672da5e1cf35cbe80fd68f93 Mon Sep 17 00:00:00 2001 From: Kiyoung Kim Date: Wed, 20 Feb 2019 18:07:41 +0900 Subject: [PATCH] Add product apk support from libnativeloader Currently libnativeloader appends vendor lib path if apk is from vendor partition. Similar to this, as part of mainline core, we should add product lib path if apk if from product partition. Bug: 124705551 Test: m -j && tested from crosshatch with product apps (such as Wallpaper) Change-Id: Iaa8d0ea61b1b9ab8a1da676a492f75c6a5d71d5d --- config/hiddenapi-greylist.txt | 2 +- .../com/android/internal/os/ClassLoaderFactory.java | 11 ++--------- .../com_android_internal_os_ClassLoaderFactory.cpp | 6 +++--- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/config/hiddenapi-greylist.txt b/config/hiddenapi-greylist.txt index aaff76eb9ae6c..2f070be506846 100644 --- a/config/hiddenapi-greylist.txt +++ b/config/hiddenapi-greylist.txt @@ -1770,7 +1770,7 @@ Lcom/android/internal/os/BaseCommand;->mArgs:Landroid/os/ShellCommand; Lcom/android/internal/os/BatterySipper$DrainType;->values()[Lcom/android/internal/os/BatterySipper$DrainType; Lcom/android/internal/os/BinderInternal;->getContextObject()Landroid/os/IBinder; Lcom/android/internal/os/BinderInternal;->handleGc()V -Lcom/android/internal/os/ClassLoaderFactory;->createClassloaderNamespace(Ljava/lang/ClassLoader;ILjava/lang/String;Ljava/lang/String;ZZ)Ljava/lang/String; +Lcom/android/internal/os/ClassLoaderFactory;->createClassloaderNamespace(Ljava/lang/ClassLoader;ILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Ljava/lang/String; Lcom/android/internal/os/IDropBoxManagerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/os/IDropBoxManagerService; Lcom/android/internal/os/IDropBoxManagerService;->getNextEntry(Ljava/lang/String;JLjava/lang/String;)Landroid/os/DropBoxManager$Entry; Lcom/android/internal/os/ProcessCpuTracker$Stats;->name:Ljava/lang/String; diff --git a/core/java/com/android/internal/os/ClassLoaderFactory.java b/core/java/com/android/internal/os/ClassLoaderFactory.java index c5bc45afee95b..99a1a19686e42 100644 --- a/core/java/com/android/internal/os/ClassLoaderFactory.java +++ b/core/java/com/android/internal/os/ClassLoaderFactory.java @@ -115,20 +115,13 @@ public class ClassLoaderFactory { final ClassLoader classLoader = createClassLoader(dexPath, librarySearchPath, parent, classLoaderName, sharedLibraries); - boolean isForVendor = false; - for (String path : dexPath.split(":")) { - if (path.startsWith("/vendor/")) { - isForVendor = true; - break; - } - } Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "createClassloaderNamespace"); String errorMessage = createClassloaderNamespace(classLoader, targetSdkVersion, librarySearchPath, libraryPermittedPath, isNamespaceShared, - isForVendor); + dexPath); Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); if (errorMessage != null) { @@ -144,5 +137,5 @@ public class ClassLoaderFactory { String librarySearchPath, String libraryPermittedPath, boolean isNamespaceShared, - boolean isForVendor); + String dexPath); } diff --git a/core/jni/com_android_internal_os_ClassLoaderFactory.cpp b/core/jni/com_android_internal_os_ClassLoaderFactory.cpp index 9ce328948ca88..f8d41e4bef541 100644 --- a/core/jni/com_android_internal_os_ClassLoaderFactory.cpp +++ b/core/jni/com_android_internal_os_ClassLoaderFactory.cpp @@ -28,16 +28,16 @@ static jstring createClassloaderNamespace_native(JNIEnv* env, jstring librarySearchPath, jstring libraryPermittedPath, jboolean isShared, - jboolean isForVendor) { + jstring dexPath) { return android::CreateClassLoaderNamespace(env, targetSdkVersion, classLoader, isShared == JNI_TRUE, - isForVendor == JNI_TRUE, + dexPath, librarySearchPath, libraryPermittedPath); } static const JNINativeMethod g_methods[] = { { "createClassloaderNamespace", - "(Ljava/lang/ClassLoader;ILjava/lang/String;Ljava/lang/String;ZZ)Ljava/lang/String;", + "(Ljava/lang/ClassLoader;ILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Ljava/lang/String;", reinterpret_cast(createClassloaderNamespace_native) }, };