Index: base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java |
diff --git a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java |
index c56d76c97d354f0886ad106f0ebdeb5b0d7b0544..7137d1779843567b75aab87c5d41cafb68fac551 100644 |
--- a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java |
+++ b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java |
@@ -54,6 +54,10 @@ public class LibraryLoader { |
// directly. |
private static boolean sLibraryWasLoadedFromApk = false; |
+ // One-way switch becomes false if the library was not aligned in the APK |
+ // file. |
rmcilroy
2014/10/28 13:07:15
if Linker.isInZipFile.
petrcermak
2014/10/28 13:48:15
Done.
|
+ private static boolean sLibraryWasAlignedInApk = true; |
+ |
// One-way switch becomes true if the system library loading failed, |
// and the right native library was found and loaded by the hack. |
// The flag is used to report UMA stats later. |
@@ -165,9 +169,19 @@ public class LibraryLoader { |
Linker.prepareLibraryLoad(); |
for (String library : NativeLibraries.LIBRARIES) { |
+ // Don't self-load the linker. This is because the build system is |
+ // not clever enough to understand that all the libraries packaged |
+ // in the final .apk don't need to be explicitly loaded. |
+ if (Linker.isLinkerLibrary(library)) { |
+ if (Linker.DEBUG) Log.i(TAG, "ignoring self-linker load"); |
rmcilroy
2014/10/28 13:07:15
Don't use Linker.DEBUG here - have a seperate one
petrcermak
2014/10/28 13:48:15
Done (added a separate one).
|
+ continue; |
+ } |
+ |
String zipfile = null; |
if (Linker.isInZipFile()) { |
zipfile = context.getApplicationInfo().sourceDir; |
+ sLibraryWasAlignedInApk = Linker.checkLibraryAlignedInApk( |
+ zipfile, System.mapLibraryName(library)); |
Log.i(TAG, "Loading " + library + " from within " + zipfile); |
} else { |
Log.i(TAG, "Loading: " + library); |
@@ -326,6 +340,10 @@ public class LibraryLoader { |
return LibraryLoadFromApkStatusCodes.SUCCESSFUL; |
} |
+ if (!sLibraryWasAlignedInApk) { |
+ return LibraryLoadFromApkStatusCodes.NOT_ALIGNED; |
+ } |
+ |
if (context == null) { |
Log.w(TAG, "Unknown APK filename due to null context"); |
return LibraryLoadFromApkStatusCodes.UNKNOWN; |