Java 由于targetSdkVersion(armeabi-v7a和libcryptopp.so)而找不到库 我创建了一个示例项目,使用CuthO++的本机C++库和NDK生成一些ECDH密钥对。你可以找到这个项目

Java 由于targetSdkVersion(armeabi-v7a和libcryptopp.so)而找不到库 我创建了一个示例项目,使用CuthO++的本机C++库和NDK生成一些ECDH密钥对。你可以找到这个项目,java,android,android-ndk,java-native-interface,crypto++,Java,Android,Android Ndk,Java Native Interface,Crypto++,该项目在大多数android设备上运行良好(在少数4.4和5.0设备上运行)。然而,我最近在Nexus5和Nexus7上运行了该应用程序,这两个版本都运行Android 6.0.1,并且该应用程序由于以下错误而崩溃 java.lang.UnsatisfiedLinkError: dlopen failed: library "./obj/local/armeabi-v7a/libcryptopp.so" not found 我真的不确定这里发生了什么,因为项目显然有这些文件,它们应该很好。这似

该项目在大多数android设备上运行良好(在少数4.4和5.0设备上运行)。然而,我最近在Nexus5和Nexus7上运行了该应用程序,这两个版本都运行Android 6.0.1,并且该应用程序由于以下错误而崩溃

java.lang.UnsatisfiedLinkError: dlopen failed: library "./obj/local/armeabi-v7a/libcryptopp.so" not found
我真的不确定这里发生了什么,因为项目显然有这些文件,它们应该很好。这似乎是某种NDK相关的问题,但我不是很确定

我试图删除armeabi-v7a文件夹,这迫使应用程序在Nexus设备上使用armeabi文件,但它也找不到这些文件

我打开了apk和所有正确的。所以文件和适当的文件夹都在那里

不确定这是安卓棉花糖问题、Nexus架构问题还是一些.so文件编译问题。我是新的使用NDK的,所以如果能找到解决这个问题的方法,我将不胜感激

编辑:进一步调查后,这似乎是安卓棉花糖的问题。提到了一个相关问题。将我的
targetSdkVersion
更改为
22
“修复”崩溃。但很明显,这不是一个非常适合未来的解决方案

显然在安卓棉花糖上,他们从OpenSSL切换到了BoringSSL。这可能是根本问题,因为我可以想象Crypto++使用OpenSSL的功能和链接来对抗它

仍然在寻找一个实际的修复程序,它让我能够
targetSdkVersion 23
。我可能会尝试本文中列出的一些解决方案,看看会发生什么

编辑2
Crypto++不与OpenSSL相链接,因此有了这一理论。感谢您的帮助。

谢谢您的帮助。我是在检查了.so文件依赖关系后意识到这一点的。如果Crypto++能够抓住这个问题,这样我们就可以向用户发布修复程序了。我已经在的wiki中添加了一个部分,但我认为它对于{some | many | most}用户来说还不够。