为了调试iOS13的设备,XCode 必须升级到11,搞得来macOS也得升。
待macOS升级到10.15.3 后,发现,原有的android-ndk-r15c-darwin-x86_64用不了(因为签名问题),应该是macOS升级后安全加强造成。
只能使用android stdio下载NDK了。
生成x86工具链
转到NDK下的build/tools目录,运行:
make-standalone-toolchain.sh --toolchain=x86-4.9 --platform=android-16 --install-dir=$HOME/libs/android-x86-build/toolchain-ndk16-x86
//输出:
HOST_OS=darwin
HOST_EXE=
HOST_ARCH=x86_64
HOST_TAG=darwin-x86_64
HOST_NUM_CPUS=4
BUILD_NUM_CPUS=8
Auto-config: --arch=x86
创建 openssl-ndk16-android-x86.sh
#!/bin/bash
export ANDROID_NDK_ROOT=$HOME/apps/android-sdk/ndk/16.1.4479499
export ANDROID_ARCH=arch-x86
export ANDROID_EABI=x86-4.9
export ANDROID_API=android-16
export ANDROID_SYSROOT="$HOME/libs/android-x86-build/toolchain-ndk16-x86/sysroot"
export ANDROID_TOOLCHAIN="$HOME/libs/android-x86-build/toolchain-ndk16-x86/bin"
#export FIPS_SIG=/project/androidGMSSL/openssl-1.1.0d/util/incore
export CROSS_COMPILE=i686-linux-android-
export ANDROID_DEV="$HOME/libs/android-x86-build/toolchain-ndk16-x86/sysroot/usr"
export PATH=$ANDROID_TOOLCHAIN:$PATH
VERBOSE=1
if [ ! -z "$VERBOSE" ] && [ "$VERBOSE" != "0" ]; then
echo "ANDROID_NDK_ROOT: $ANDROID_NDK_ROOT"
echo "ANDROID_ARCH: $_ANDROID_ARCH"
echo "ANDROID_EABI: $_ANDROID_EABI"
echo "ANDROID_API: $ANDROID_API"
echo "ANDROID_SYSROOT: $ANDROID_SYSROOT"
echo "ANDROID_TOOLCHAIN: $ANDROID_TOOLCHAIN"
echo "FIPS_SIG: $FIPS_SIG"
echo "CROSS_COMPILE: $CROSS_COMPILE"
echo "ANDROID_DEV: $ANDROID_DEV"
fi
cd openssl-OpenSSL_1_0_2l
make clean
./Configure -D__ANDROID_API__=16 no-shared android-x86 no-ssl2 no-ssl3 no-comp no-hw no-engine --prefix=$HOME/libs/android-x86-build/out_ndk16_x86
make depend
make
make install
注意:必须定义“ANDROID_API=16”,否则会出很多错误
创建 libcurl-ndk16-android-x86.sh
#!/bin/bash
export ANDROID_NDK_ROOT=$HOME/apps/android-sdk/ndk/16.1.4479499
export ANDROID_ARCH=arch-x86
export ANDROID_EABI=x86-4.9
export ANDROID_API=android-16
export ANDROID_SYSROOT="$HOME/libs/android-x86-build/toolchain-ndk16-x86/sysroot"
export ANDROID_TOOLCHAIN="$HOME/libs/android-x86-build/toolchain-ndk16-x86/bin"
#export FIPS_SIG=/project/androidGMSSL/openssl-1.1.0d/util/incore
export CROSS_COMPILE=i686-linux-android-
export ANDROID_DEV="$HOME/libs/android-x86-build/toolchain-ndk16-x86/sysroot/usr"
export PATH=$ANDROID_TOOLCHAIN:$PATH
VERBOSE=1
if [ ! -z "$VERBOSE" ] && [ "$VERBOSE" != "0" ]; then
echo "ANDROID_NDK_ROOT: $ANDROID_NDK_ROOT"
echo "ANDROID_ARCH: $_ANDROID_ARCH"
echo "ANDROID_EABI: $_ANDROID_EABI"
echo "ANDROID_API: $ANDROID_API"
echo "ANDROID_SYSROOT: $ANDROID_SYSROOT"
echo "ANDROID_TOOLCHAIN: $ANDROID_TOOLCHAIN"
echo "FIPS_SIG: $FIPS_SIG"
echo "CROSS_COMPILE: $CROSS_COMPILE"
echo "ANDROID_DEV: $ANDROID_DEV"
fi
export CFLAGS="-D__ANDROID_API__=16"
export CC="$ANDROID_TOOLCHAIN/i686-linux-android-gcc"
export LD="$ANDROID_TOOLCHAIN/i686-linux-androideabi-ld"
cd curl-7.59.0
make clean
./configure --host=i686-linux-android --disable-shared --without-zlib --with-ssl=$HOME/libs/android-x86-build/out_ndk16_x86 --prefix=$HOME/libs/android-x86-build/out_ndk16_x86
read -p "continue?"
make depend
make all
make install
注意:因为configure不支持-D参数,所以必须定义“CFLAGS”,否则会出很多错误