diff options
author | Dmitriy Ivanov <dimitry@google.com> | 2015-06-05 22:00:13 -0700 |
---|---|---|
committer | Dmitriy Ivanov <dimitry@google.com> | 2015-06-09 20:40:20 -0700 |
commit | e56b3f63e8235ab45e081fc9d3476a3e5248ddde (patch) | |
tree | 5be660a05fe2e9c0186ffb1652006439a707a8ca | |
parent | 7e8e29ad2e5e8a722db163f5e740ba3453c45d9b (diff) | |
download | frameworks_base-e56b3f63e8235ab45e081fc9d3476a3e5248ddde.zip frameworks_base-e56b3f63e8235ab45e081fc9d3476a3e5248ddde.tar.gz frameworks_base-e56b3f63e8235ab45e081fc9d3476a3e5248ddde.tar.bz2 |
Add path to native libraries inside apk
If an application has native code (and primary abi)
include path to corresponding folder inside apk-file
to ldLibraryPath when constructing PathClassLoader
Bug: 21647354
Bug: 21667767
Bug: 21726698
Bug: 8076853
Change-Id: Ib0a2f01ee69019d3206a00c542bd7d0f58d0c481
-rw-r--r-- | core/java/android/app/LoadedApk.java | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java index 9604789..c2bf28a 100644 --- a/core/java/android/app/LoadedApk.java +++ b/core/java/android/app/LoadedApk.java @@ -55,6 +55,7 @@ import java.lang.ref.WeakReference; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.URL; +import java.util.List; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; @@ -166,6 +167,7 @@ public final class LoadedApk { if (runtimeIsa.equals(secondaryIsa)) { final ApplicationInfo modified = new ApplicationInfo(info); modified.nativeLibraryDir = modified.secondaryNativeLibraryDir; + modified.primaryCpuAbi = modified.secondaryCpuAbi; return modified; } } @@ -272,8 +274,9 @@ public final class LoadedApk { } } - final ArrayList<String> zipPaths = new ArrayList<>(); - final ArrayList<String> libPaths = new ArrayList<>(); + final List<String> zipPaths = new ArrayList<>(); + final List<String> apkPaths = new ArrayList<>(); + final List<String> libPaths = new ArrayList<>(); if (mRegisterPackage) { try { @@ -329,6 +332,8 @@ public final class LoadedApk { } } + apkPaths.addAll(zipPaths); + if (mSharedLibraries != null) { for (String lib : mSharedLibraries) { if (!zipPaths.contains(lib)) { @@ -346,6 +351,14 @@ public final class LoadedApk { } final String zip = TextUtils.join(File.pathSeparator, zipPaths); + + // Add path to libraries in apk for current abi + if (mApplicationInfo.primaryCpuAbi != null) { + for (String apk : apkPaths) { + libPaths.add(apk + "!/lib/" + mApplicationInfo.primaryCpuAbi); + } + } + final String lib = TextUtils.join(File.pathSeparator, libPaths); /* |