From 90b2b3847aa9211ab49fb4425803055057537eca Mon Sep 17 00:00:00 2001 From: Max Lv Date: Fri, 19 May 2017 12:21:26 +0800 Subject: [PATCH] Fix the crash on Android O. #19 --- .gitignore | 1 + src/go | 2 +- src/make.bash | 25 ++++++++++++++++++++----- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 9a39257..bed9cfa 100644 --- a/.gitignore +++ b/.gitignore @@ -62,6 +62,7 @@ fabric.properties bin/ gen/ out/ +src/.deps # Gradle files .gradle/ diff --git a/src/go b/src/go index dcf83d3..26db64c 160000 --- a/src/go +++ b/src/go @@ -1 +1 @@ -Subproject commit dcf83d3b990d79304b78780a3b128b76fc6b70cc +Subproject commit 26db64c76604b35e756f593d8ce25da5a83af6b6 diff --git a/src/make.bash b/src/make.bash index 13bb793..9a1c412 100755 --- a/src/make.bash +++ b/src/make.bash @@ -4,21 +4,25 @@ function try () { "$@" || exit -1 } -[ -z "$ANDROID_NDK_HOME" ] && ANDROID_NDK_HOME=~/android-ndk-r12b +[ -z "$ANDROID_NDK_HOME" ] && ANDROID_NDK_HOME=$ANDROID_HOME/ndk-bundle -DIR=$(pwd)/src +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" MIN_API=$1 DEPS=$(pwd)/.deps ANDROID_ARM_TOOLCHAIN=$DEPS/android-toolchain-${MIN_API}-arm +ANDROID_ARM64_TOOLCHAIN=$DEPS/android-toolchain-21-arm64 ANDROID_X86_TOOLCHAIN=$DEPS/android-toolchain-${MIN_API}-x86 -ANDROID_ARM_CC=$ANDROID_ARM_TOOLCHAIN/bin/arm-linux-androideabi-gcc +ANDROID_ARM_CC=$ANDROID_ARM_TOOLCHAIN/bin/arm-linux-androideabi-clang ANDROID_ARM_STRIP=$ANDROID_ARM_TOOLCHAIN/bin/arm-linux-androideabi-strip -ANDROID_X86_CC=$ANDROID_X86_TOOLCHAIN/bin/i686-linux-android-gcc +ANDROID_ARM64_CC=$ANDROID_ARM64_TOOLCHAIN/bin/aarch64-linux-android-clang +ANDROID_ARM64_STRIP=$ANDROID_ARM64_TOOLCHAIN/bin/aarch64-linux-android-strip + +ANDROID_X86_CC=$ANDROID_X86_TOOLCHAIN/bin/i686-linux-android-clang ANDROID_X86_STRIP=$ANDROID_X86_TOOLCHAIN/bin/i686-linux-android-strip -try mkdir -p $DEPS $DIR/main/libs/armeabi-v7a $DIR/main/libs/x86 +try mkdir -p $DEPS $DIR/main/libs/armeabi-v7a $DIR/main/libs/x86 $DIR/main/libs/arm64-v8a if [ ! -d "$ANDROID_ARM_TOOLCHAIN" ]; then echo "Make standalone toolchain for ARM arch" @@ -26,6 +30,12 @@ if [ ! -d "$ANDROID_ARM_TOOLCHAIN" ]; then --api $MIN_API --install-dir $ANDROID_ARM_TOOLCHAIN fi +if [ ! -d "$ANDROID_ARM64_TOOLCHAIN" ]; then + echo "Make standalone toolchain for ARM64 arch" + $ANDROID_NDK_HOME/build/tools/make_standalone_toolchain.py --arch arm64 \ + --api 21 --install-dir $ANDROID_ARM64_TOOLCHAIN +fi + if [ ! -d "$ANDROID_X86_TOOLCHAIN" ]; then echo "Make standalone toolchain for X86 arch" $ANDROID_NDK_HOME/build/tools/make_standalone_toolchain.py --arch x86 \ @@ -58,6 +68,11 @@ try env CGO_ENABLED=1 CC=$ANDROID_ARM_CC GOOS=android GOARCH=arm GOARM=7 go buil try $ANDROID_ARM_STRIP client try mv client $DIR/main/libs/armeabi-v7a/libkcptun.so +echo "Cross compile kcptun for arm64" +try env CGO_ENABLED=1 CC=$ANDROID_ARM64_CC GOOS=android GOARCH=arm64 go build -ldflags="-s -w" +try $ANDROID_ARM64_STRIP client +try mv client $DIR/main/libs//arm64-v8a/libkcptun.so + echo "Cross compile kcptun for x86" try env CGO_ENABLED=1 CC=$ANDROID_X86_CC GOOS=android GOARCH=386 go build -ldflags="-s -w" try $ANDROID_X86_STRIP client