Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.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 OpenSSL构建配置armv7对所有arm设备安全吗?_Android_Android Ndk_Openssl - Fatal编程技术网

Android OpenSSL构建配置armv7对所有arm设备安全吗?

Android OpenSSL构建配置armv7对所有arm设备安全吗?,android,android-ndk,openssl,Android,Android Ndk,Openssl,我目前正在使用将我们的项目OpenSSL更新为1.0.1i 查看配置文件,我发现OpenSSL有两个Android构建选项:Android-armv7和Android-x86 我已经能够构建armv7配置,并且它似乎在Nexus5和KindleFire第一代上正常工作 我想知道的是,如果我当前的库位于armeabi目录而不是armeabi-v7a目录中,它会工作吗?关于OpenSSL是否使用armv7构建是否重要,我找不到足够的信息,但我的项目库是使用较旧的arm构建的 注意:我的最低API级别

我目前正在使用将我们的项目OpenSSL更新为1.0.1i

查看配置文件,我发现OpenSSL有两个Android构建选项:Android-armv7和Android-x86

我已经能够构建armv7配置,并且它似乎在Nexus5和KindleFire第一代上正常工作

我想知道的是,如果我当前的库位于armeabi目录而不是armeabi-v7a目录中,它会工作吗?关于OpenSSL是否使用armv7构建是否重要,我找不到足够的信息,但我的项目库是使用较旧的arm构建的

注意:我的最低API级别是8

我想知道的是,如果我当前的库位于armeabi目录而不是armeabi-v7a目录中,它会工作吗

我想这里有几个问题。首先,能否将
libssl
libcrypto
放入
armeabi/
中。这是一个Android问题(不是OpenSSL问题)。我似乎记得Brian在NDK邮件列表中谈到过这一点(但我现在找不到)。我认为,如果在例如
armeabi-v7a/
中找不到更具体的库,那么
armeabi/
就是一种退路

第二,您可以在其他平台上运行ARMv7a版本的
libssl
libcrypto
。我相信ARMv7a在ARMv7上添加了一些虚拟机监控程序扩展,所以您应该可以,因为OpenSSL不使用它们。但是,如果在使用ARMv6或ARMv5的旧设备上运行,您可能会遇到麻烦

在这种情况下,您可能需要下载为ARMv5构建的旧版本的Android NDK,然后将ARMv5版本的
libssl
libcrypto
放在
armeabi/
中。您可以在页面下方大约三分之一的地方找到旧版本的NDK

更具体地说,Android 2.2是API 8,大约在2010年5月发布。因此,您可能希望从2010年3月开始获取并使用Android NDK修订版3进行构建。NDK R3仅支持
armeabi
和目标ARMv5TE(来自
CPU-ARCH-ABIS.TXT
文件)。下载是


OpenSSL不遵循ARMv7a的说明。它缺少
-mfloat abi=softfp
标志。调用从Java向库传递浮点值的函数时可能会遇到问题。它们不多,但有一个是。熵估计值以浮点形式传递,在不兼容之后,估计值可能为0.0f。请参阅NDK邮件列表上的和


以下是自述文件中的一条注释,您还应注意:

III.3。安装时自动提取本机代码:
-----------------------------------------------------------
安装应用程序时,package manager服务将扫描
.apk并查找表单的任何共享库:

lib/。我没有x86安卓设备,因此无法在设备上运行自检。欢迎反馈。

感谢您的回答。接下来,有没有一种方法可以为armv5TE编译OpenSSL 1.0.1i?查看我在原始问题中链接的配置和说明,我似乎只能为armv7和x86编译。在搜索了一段时间的配置后,我找到了解决方案。对于那些可能遇到我的问题的人,解决方案是绕过配置,使用带有android的配置选项。因此,“/Configure android$OPTIONS”