直到 OpenSSL 的出现wiki http://wiki.openssl.org/index.php/Android和 setenv-android.sh 相应更新,我将在这里发布配方。该过程所需的修复是:
- 更新 setenv-android.sh 以支持 Windows。
- 更新 PATH 以使用 Android NDK 的 (mingw) GNU make(而不是 Cygwin 的)。
- Invoke
make
具有 Windows 风格的 Cygwin perl 路径。
这个配方将是 Cygwin 和 mingw 的奇怪混合体(因为 win32 的 Android NDK gcc 工具链是 mingw)。我假设 Android NDK 的 Windows x86_64 版本解压到c:\android-ndk-r9d,并且您希望使用 gcc 4.8 工具链。
- 安装 Android NDK(废话!)。
- 安装 Cygwin——确保包含perl
- 以管理员身份启动 Cygwin shell,以确保本机符号链接能够正常工作。
在控制台中,运行以下脚本来设置变量:
export \
CYGWIN=winsymlinks:native \
ANDROID_API=android-14 \
ANDROID_DEV=c:/android-ndk-r9d/platforms/android-14/arch-arm/usr \
PATH=/cygdrive/c/android-ndk-r9d/prebuilt/windows-x86_64/bin:/cygdrive/c/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/bin:$PATH \
MACHINE=armv7 \
SYSTEM=android \
ARCH=arm \
CROSS_COMPILE=arm-linux-androideabi-
现在,解压 openssl:
-
tar xzfv openssl-1.0.1i.tar.gz
(或者无论你的 tarball 是什么)
-
cd openssl-1.0.1i
(或者无论你的版本是什么)
确保 include/openssl 中有实际的本机 Win32 (!) 符号链接:
cmd /c "dir include\openssl"
您应该看到类似以下内容:
13-Aug-14 05:59 PM <SYMLINK> aes.h [..\..\crypto\aes\aes.h]
13-Aug-14 05:59 PM <SYMLINK> asn1.h [..\..\crypto\asn1\asn1.h]
(etc.)
现在是时候配置了:
./config shared -no-ssl2 -no-ssl3 -no-comp -no-hw -no-engine --openssldir=/foo/bar
忽略构建失败(由于找不到 perl)。我们会立即纠正这个问题。做这个:
make PERL=$(cygpath -w $(which perl))
现在等待几分钟直到它构建完毕,很快,你就拥有了 libcrypto.so 等。