Take the 2-minute tour ×

I am struggling with using Dropbox (Sync API) and Andengine in the same android app. Both are using native libraries and, as far as I know, Andengine is developed for ARMv7a and Dropbox for ARM systems. Running each part of the application on its own, everything works fine. However, combining both parts results in a: java.lang.UnsatisfiedLinkError: Couldn't load DropboxSync: findLibrary returned null.

It seems that only the armeabi-v7a folder is checked for the library as soon as this folder is present? However, the libDropboxSync.so is only located in the armeabi folder.

Everything is tested with a Nexus S running Android 4.1.2.

Thanks in advance,

share|improve this question
See armeabi-v7a vs armeabi. You can not mix and match the two. You have a multi-lib installation, so need dropbox compiled from v7a. It is possible to write shims allowing inter-operate. I guess the Android loader is not supporting this. The shims maybe highly in-efficient, storing floating point registers when it isn't needed, etc. Also, harware floating point. –  artless noise Apr 19 '13 at 13:50
add comment

1 Answer

From $NDK/docs/CPU-ARCH-ABIS.html: if primary-abi is found secondary won't be scanned.

III.3. Automatic extraction of native code at install time:

When installing an application, the package manager service will scan
the .apk and look for any shared library of the form:


If one is found, then it is copied under $APPDIR/lib/lib<name>.so,
where $APPDIR corresponds to the application's specific data directory.

If none is found, and a secondary ABI is defined, the service will
then scan for shared libraries of the form:

You can check this by;

$ adb shell getprop|grep abi
[ro.product.cpu.abi2]: [armeabi]
[ro.product.cpu.abi]: [armeabi-v7a]

as you can see primary abi is more specific then the secondary one.

Solution-wise you can move armv5 library under armv7-a. It should work, but it will be only visible to such devices under Google Play.

share|improve this answer
add comment

Your Answer


