golang android so库编译
第一步:下载并安装 android 官方工具:NDK (https://developer.android.com/ndk/downloads/index.html)
第二步:编写需要编译成so的共享golang方法文件
注意事项:
- 所属package 为 main
- 必须导入import “C”
- 提供的方法前需加备注://export 方法名
- *C.char 转 golang string: C.GoString(argeName)
第三步:编译命令:
x86_64 :
CGO_ENABLED=1 CC=/you/install/ndk/path/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang GOOS=android GOARCH=amd64 go build -buildmode=c-shared -o libxxx_amd64.so xxx.go
x86:
CGO_ENABLED=1 CC=/you/install/ndk/path/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android21-clang GOOS=android GOARCH=386 go build -buildmode=c-shared -o libxxx_amd.so xxx.go
arm64-v8a:
CGO_ENABLED=1 CC=/you/install/ndk/path/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang GOOS=android GOARCH=arm64 go build -buildmode=c-shared -o libxxx_arm64.so xxx.go
armeabiv-v7a:
CGO_ENABLED=1 CC=/you/install/ndk/path/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang GOOS=android GOARCH=arm go build -buildmode=c-shared -o libxxx_arm.so xxx.go
各so类型说明:
- armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
- arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
- armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
- x86: 平板、模拟器用得比较多。
- x86_64: 64位的平板。