我正在开发一个我试图略微修改的示例应用(dlib)。该示例使用使用JNI(其.so文件)调用的C ++库。该示例附带的库工作正常。我重新编译了该库,但现在它不会加载它,它会抛出此错误:
dlopen failed: cannot locate symbol "__aeabi_memcpy" referenced by "/data/app/com.tzutalin.dlibtest-1/lib/arm/libpeople_det.so"
我认为这是目标SDK之间的不匹配,所以我确保所有内容都设置为SDK版本24,但我仍然会收到此错误。
有什么想法吗?我在Windows 10上使用Android Studio。
感谢。
答案 0 :(得分:2)
这是由全新的Nougat(24)SDK引入的android studio中的新BUG,如果你回滚到Marshmallow(23)一切都会好的。直到Android Studio团队修复。
问题:如果编译With(24)And Targeting(24)并在带有(23)的设备中安装apk,设备将找不到您的库,但是,如果您安装了apk在任何其他设备版本2.33至5和7 / Nougat(棉花糖除外)。一切都会好起来的。测试。
解决方案:使用(23)和定位(23)进行编译,然后坐下来等待修复。测试。
我的环境:我在上周完成了所有Android Studio更新。 (NDK 13,Nougat和Marshmallow与最新的Emulators,以及真正的设备android 4,5,6。)。
希望Android Studio能够听到这个问题,因为如果不尽快修复,将会在未来几周内成为Play商店的噩梦。对于棉花糖用户。
编辑:升级到Android Studio 2.2(2016年9月15日版本#AI-145.3276617)后,发布日期(9月19日)。我能够用24进行编译,目标是24并在每个设备上运行Android Gingerbread To Nougat。两者,模仿和真实。就像它应该的那样。