Run 32-bit app in multiArch APK.
Bug: 26874366
Change-Id: I2c1fd1d036efe72b28b5fe996416df69a583959f
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index 220fb607..c071162 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -326,8 +326,7 @@
// This is a temporary hack. Callers must use
// createPackageContext(packageName).getApplicationInfo() to
// get the right paths.
- maybeAdjustApplicationInfo(ai);
- return ai;
+ return maybeAdjustApplicationInfo(ai);
}
} catch (RemoteException e) {
throw new RuntimeException("Package manager has died", e);
@@ -336,7 +335,7 @@
throw new NameNotFoundException(packageName);
}
- private static void maybeAdjustApplicationInfo(ApplicationInfo info) {
+ private static ApplicationInfo maybeAdjustApplicationInfo(ApplicationInfo info) {
// If we're dealing with a multi-arch application that has both
// 32 and 64 bit shared libraries, we might need to choose the secondary
// depending on what the current runtime's instruction set is.
@@ -353,9 +352,12 @@
// Everything will be set up correctly because info.nativeLibraryDir will
// correspond to the right ISA.
if (runtimeIsa.equals(secondaryIsa)) {
- info.nativeLibraryDir = info.secondaryNativeLibraryDir;
+ ApplicationInfo modified = new ApplicationInfo(info);
+ modified.nativeLibraryDir = info.secondaryNativeLibraryDir;
+ return modified;
}
}
+ return info;
}
@Override