From 5cba0cff2c2f88853b82015890fe384195e78e69 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 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: Ic85b16e8e4484a35c659c16e067f1e7c7285d05e Merged-In: 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 36936d10a3dd2..b02cf48025a3d 100644 --- a/config/hiddenapi-greylist.txt +++ b/config/hiddenapi-greylist.txt @@ -1419,7 +1419,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/ProcessCpuTracker$Stats;->name:Ljava/lang/String; Lcom/android/internal/os/ProcessCpuTracker$Stats;->rel_stime:I 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) }, };