golang android so库编译

文章详细介绍了如何使用Go语言编译Android动态链接库SO文件,包括下载安装NDK,编写Go代码,以及针对不同架构(x86_64,x86,arm64-v8a,armeabi-v7a)的编译命令。注意Go代码中需导入C包并使用//export注解导出方法,以便在Android应用中调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

golang android so库编译


第一步:下载并安装 android 官方工具:NDK (https://developer.android.com/ndk/downloads/index.html)
第二步:编写需要编译成so的共享golang方法文件
注意事项:

  1. 所属package 为 main
  2. 必须导入import “C”
  3. 提供的方法前需加备注://export 方法名
  4. *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类型说明:

  1. armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
  2. arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
  3. armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
  4. x86: 平板、模拟器用得比较多。
  5. x86_64: 64位的平板。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值