android中alljoynlib中的opendl失败
我的项目中有一个android中alljoynlib中的opendl失败,android,dlopen,alljoyn,Android,Dlopen,Alljoyn,我的项目中有一个alljoyn库,用于将android设备与投票应用程序配对。在旧设备中,应用程序可以正常运行,但在新设备中,应用程序在开始运行时会停止 这就是错误,我得到: Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "libcrypto.so" not found at java.lang.Runtime.loadLibrary0(Runtime.java:10
alljoyn
库,用于将android设备与投票应用程序配对。在旧设备中,应用程序可以正常运行,但在新设备中,应用程序在开始运行时会停止
这就是错误,我得到:
Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "libcrypto.so" not found
at java.lang.Runtime.loadLibrary0(Runtime.java:1016)
at java.lang.System.loadLibrary(System.java:1657)
at com.example.nima.voting.alljoyn.peergroupmanager.PeerGroupManager.<clinit>(PeerGroupManager.java:60)
原因:java.lang.unsatifiedLinkError:dlopen失败:找不到库“libcrypto.so”
位于java.lang.Runtime.loadLibrary0(Runtime.java:1016)
位于java.lang.System.loadLibrary(System.java:1657)
位于com.example.nima.voting.alljoyn.peergroupmanager.peergroupmanager.(peergroupmanager.java:60)
注意:我不是Android开发者
也就是说,我发现,它提到了与您描述的类似的行为:
主Android进程是zyote
。它类似于Linux中的init
。合子
启动时加载OpenSSL,并加载版本0.9.8。如果你链接
针对OpenSSL 1.0.1,您将获得神秘的运行时崩溃。
崩溃是由于Android loader使用0.9.8版本的
库(已从受精卵映射),而不是您的版本
OpenSSL
您可以使用共享对象,但共享对象必须是libssl
和libcrypto
静态版本的包装器
您提到应用程序在旧设备中正确加载,但在新设备中崩溃。如果新设备针对OpenSSL v1.0.1进行链接,旧设备针对v0.9.8进行链接,那么这可能是问题的根本原因
解决方案似乎是针对libcrypto
(显然也针对libssl
)的静态库进行编译,或者在生成后重命名这些依赖项,然后将它们复制到您的预编译
目录中(如果我正确解释了链接中的答案):
原因是该系统有自己的(可能不同)
这些共享库的版本,加载程序将使用
/system/lib/libssl.so
和/system/lib/libcrypto.so
而不是您的
私人副本
如何将libcrypto.so导入PeerGroupManager.java?在问题的正文中包含import语句。static{System.loadLibrary(“alljoyn_java”);}您使用的是哪个alljoyn版本?在哪个Android版本的应用程序不工作?如果下面的答案解决了你的问题,请考虑将其标记为所选答案。如果没有,请考虑为什么它没有帮助,所以我们可以继续帮助您解决您的问题。实际上,我重新运行一个旧项目,它运行在Android的棒棒糖和旧版本完美,但它崩溃与后来的Android版本中提到的错误。解决方案似乎是针对
libcrypto
和libssl
的静态库进行编译,或者在生成后重命名这些依赖项,然后将它们复制到您的预编译
目录中。有关更完整的上下文,请参见我答案开头的链接。