1

我在同一个 Android 应用程序中使用 Dropbox(同步 API)和 Andengine 时遇到了困难。两者都使用本机库,据我所知,Andengine 是为 ARMv7a 和 Dropbox 为 ARM 系统开发的。单独运行应用程序的每个部分,一切正常。但是,将这两个部分结合起来会导致:java.lang.UnsatisfiedLinkError: Couldn't load DropboxSync: findLibrary returned null。

似乎只有armeabi-v7a文件夹会在该文件夹出现后立即检查库?但是,libDropboxSync.so 仅位于armeabi文件夹中。

一切都使用运行 Android 4.1.2 的 Nexus S 进行测试。

在此先感谢,
斯特凡

4

2 回答 2

1

$NDK/docs/CPU-ARCH-ABIS.html:如果primary-abi找到secondary将不会被扫描。

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:

     lib/<primary-abi>/lib<name>.so

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:

您可以通过以下方式进行检查;

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

如您所见,主要 abi 比次要 abi 更具体。

解决方案方面,您可以将 armv5 库移动到 armv7-a 下。它应该可以工作,但它只对 . 下的此类设备可见Google Play

于 2013-04-19T14:20:34.793 回答
0

查看第 3 点和第 4 点

  1. 在 Android Studio 中,切换到“项目视图”。
  2. 从下载的 SDK 中的 libs 目录中,将 dropbox-sync-sdk-android.jar 拖到项目的 app/libs 目录中。
  3. 右键单击 dropbox-sync-sdk-android.jar 并选择“添加为库”。在出现的对话框中单击“确定”。
  4. 在 app/src/main 下的项目中创建一个名为 jniLibs 的新目录。从 SDK 中,将 armeabi、armeabi-v7a、mips 和 x86 拖到新的 jniLibs 目录中。
于 2015-04-01T07:06:16.120 回答