Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中alljoynlib中的opendl失败_Android_Dlopen_Alljoyn - Fatal编程技术网

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
的静态库进行编译,或者在生成后重命名这些依赖项,然后将它们复制到您的
预编译
目录中。有关更完整的上下文,请参见我答案开头的链接。