【问题标题】:How to build OpenSSL 1.0.2 for Android 6.0.1?如何为 Android 6.0.1 构建 OpenSSL 1.0.2?
【发布时间】:2016-12-29 17:19:46
【问题描述】:

我正在开发一个使用 OpenSSL 库的应用程序。我正在尝试在 Android 模拟器上运行该应用程序而不用boringssl 替换 OpenSSL。因此,我下载了 AOSP 源代码树,目前可以使用模拟器。

要添加 OpenSSL,我将 openssl 克隆到 external/openssl

基于openssl项目http://github.com/eighthave/openssl-android 我在 external/openssl、external/openssl/apps、external/openssl/crypto 和 external/openssl/ssl 文件夹中添加了不同的 Android.mk 文件,将 android-config.mk 和 Application.mk 添加到了 external/openssl 文件夹中。但是当我运行 mm 时,编译器吐出一个错误:

build/core/base_rules.mk:217: *** external/openssl/crypto: MODULE.TARGET.SHARED_LIBRARIES.libcrypto already defined by external/boringssl.
build/core/ninja.mk:155: recipe for target 'out/build-aosp_arm-mmm-external_openssl_Android.mk.ninja' failed
make: *** [out/build-aosp_arm-mmm-external_openssl_Android.mk.ninja] Error 1
make: Leaving directory '/home/rong/projects/Android/src'

有谁知道如何在 AOSP 中构建 OpenSSL?


AOSP 环境:

  • PLATFORM_VERSION := 6.0.1
  • PLATFORM_SDK_VERSION := 23
  • PLATFORM_JACK_MIN_SDK_VERSION := 24

开发环境:

  • Ubuntu 16.04 LTS
  • GCC 5.4

【问题讨论】:

  • 由于 BoringSSL 也使用相同的库名称,因此您必须更改 libcrypto.so 和 libssl.so 的名称。要逐步生成这些,请按照我下面的回答。

标签: android c ssl openssl


【解决方案1】:

按照这些说明可能会有所帮助:)

  1. 从此网址下载 Android NDK(版本 ndk-r13b):

    https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip

  2. 将 NDK 解压到 /home/Android。

  3. 从此 URL 下载交叉编译设置脚本:

    https://wiki.openssl.org/images/7/70/Setenv-android.sh

  4. 在 Setenv-android.sh 脚本中进行以下更改:

    a:将以下行添加到脚本的开头:

    ANDROID_NDK_ROOT=/home/Android/android-ndk-r13b

    b:修改_ANDROID_NDK="android-ndk-r13"。

    c:修改_ANDROID_EABI="arm-linux-androideabi-4.9"

    d:修改_ANDROID_API="android-23"

  5. 从此网址下载 openssl(版本 1.0.2n):

    https://www.openssl.org/source/old/1.0.2/openssl-1.0.2n.tar.gz

  6. 解压下载的压缩包。

  7. 打开新的终端窗口并导航到提取的目录。

  8. 将 Setenv-android.sh 脚本移动到该目录并执行以下命令:

    chmod a+x Setenv-android.sh
    source ./Setenv-android.sh
    
  9. 运行以下命令(配置 OpenSSL 源以构建 Android):

    ./Configure shared android
    
  10. 执行以下命令构建 libcrypto 和 libssl 共享库。

    make CALC_VERSIONS="SHLIB_COMPAT=; SHLIB_SOVER=" build_libs
    
  11. 让构建成功完成。

【讨论】:

    猜你喜欢
    • 2014-02-23
    • 2012-10-11
    • 1970-01-01
    • 2011-08-09
    • 2014-09-01
    • 2013-01-02
    • 2012-01-12
    • 1970-01-01
    • 2019-06-29
    相关资源
    最近更新 更多