我正在努力在同一个Android应用中使用Dropbox(Sync API)和Andengine。两者都使用本机库,据我所知,Andengine是为ARMv7a和Dropbox for ARM系统开发的。单独运行应用程序的每个部分,一切正常。但是,组合这两个部分会导致:java.lang.UnsatisfiedLinkError:无法加载DropboxSync:findLibrary返回null。
一旦此文件夹存在,似乎只检查了库的 armeabi-v7a 文件夹?但是,libDropboxSync.so仅位于 armeabi 文件夹中。
使用运行Android 4.1.2的Nexus S测试所有内容。
提前致谢,
斯蒂芬
答案 0 :(得分: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比次要的更具体。
解决方案方面,您可以在armv7-a下移动armv5库。 应工作,但只有Google Play
下的此类设备才能看到它。
答案 1 :(得分:0)
查看第3点和第4点
- 在Android Studio中,切换到“项目视图”。
- 从下载的SDK中的libs目录中,将dropbox-sync-sdk-android.jar拖到项目的app / libs目录中。
- 右键单击dropbox-sync-sdk-android.jar并选择“Add as library”。在出现的对话框中单击“确定”。
- 在app / src / main下的项目中创建一个名为jniLibs的新目录。从SDK中,将armeabi,armeabi-v7a,mips和x86拖入 新的jniLibs目录。
醇>