14
votes

In my product I'm finding that when I install the APK file onto the Galaxy Nexus running android 4.0.1 the incorrect .so file is being installed. I have a so-called "fat" APK that includes native code for armeabi, armeabi-v7a and x86.

I'm finding that the .so file for the armeabi CPU ABI is being extracted from the APK file rather than the armeabi-v7a .so file. If I remove the "armeabi" folder from the APK file then the galaxy nexus correctly installs the .so file from the armeabi-v7a folder.

I've verified that the CPU ABI of the nexus is "armeabi-v7a" and its secondary ABI is "armeabi".

Has anyone else seen this problem, and have they found a way to work around the issue without removing the "armeabi" folder from their libs directory in the APK?

1

1 Answers

13
votes

This seems to be a bug. I've tested it also by creating a small project using native code and indeed Galaxy Nexus chooses the wrong library (armeabi instead of armeabi-v7a).

I've reported this bug at http://code.google.com/p/android/issues/detail?id=25321 , with the sample project attached on the bug. Please star it to bring attention to Android engineers.

Seems that another StackOverflow question originates from this bug too: Android floating point math performance.