如何为Android 6.0.1构建OpenSSL 1.0.2?

时间:2016-08-23 03:04:10

标签: android c ssl openssl

我正在开发一个使用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

1 个答案:

答案 0 :(得分: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. 提取下载的 tarball。

  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. 让构建成功完成。