2

由于某些版本的 OpenSSL 中存在令人心碎的问题,我需要将我的 OpenSSL 版本更新为 openssl-1.0.1g。是否支持安卓平台?如果是的话,有人可以向我推荐建造程序吗?我无法编译 android 平台的源代码。

任何善意的建议都将受到高度赞赏。

注意:我将为 android-ndk 使用 openssl

4

1 回答 1

5

openssl-1.0.1g 有安卓平台支持吗?

是的。

  1. 转到OpenSSL 和 Android并获取setenv-android.sh
  2. 确保ANDROID_NDK_ROOT已设置
  3. 确保ANDROID_SDK_ROOT已设置
  4. 开放setenv-android.sh,保证_ANDROID_NDK,适合你的_ANDROID_EABI口味_ANDROID_API
  5. 运行以下命令(运行时注意前导点setenv-android.sh

    $ . ./setenv-android.sh

    $ cd openssl-1.0.1g/

    $ perl -pi -e 's/install: all install_docs install_sw/install: install_docs install_sw/g' Makefile.org

    $ ./config shared -no-ssl2 -no-ssl3 -no-comp -no-hw -no-engine --openssldir=/usr/local/ssl/$ANDROID_API

    $ make all

    $ sudo -E make install CC=$ANDROID_TOOLCHAIN/arm-linux-androideabi-gcc RANLIB=$ANDROID_TOOLCHAIN/arm-linux-androideabi-ranlib

安装后,您的 Android OpenSSL 将位于例如/usr/local/ssl/android-18.


任何善意的建议都将受到高度赞赏。

注意:Android 的 Zygote 类似于 Linux/Unix init。所有进程都继承自它。问题是,Zygote 加载 OpenSSL 并且它可能是一个低级版本。因此,您必须创建一个静态链接到 OpenSSL 的包装共享对象。您的程序将调用您的包装共享对象,以避免 OpenSSL 的已映射和低级版本。

于 2014-04-17T05:31:28.600 回答