Golang 开发Android服务--交叉编译

Golang 开发Android服务--交叉编译

go env -w GOPROXY=https://repo.huaweicloud.com/repository/goproxy/,https://goproxy.nd.tevat.dev,https://goproxy.cn,direct

export GOPROXY=https://goproxy.io,direct
go env -w GOPROXY=https://goproxy.io,direct

https://goproxy.io 是一个流行的Go模块代理,但也有其他代理可供选择,如

https://proxy.golang.org(Go官方代理)、https://goproxy.cn(中国大陆访问友好)等。

 

移动端主要 arm 架构,编译命令

CGO_ENABLED=0 GOOS=linux GOARCH=arm go build -o go_pro mine.go

CGO_ENABLED=0 GOOS=linux,指定临时环境变量不影响其它编译,也可以设置为全局环境变量。

AOSP 查看版本信息

getprop 不传参数查看所有属性值

getprop ro.build.version.release

linux可以用 lscpu 查看CPU信息,AOSP不支持,查看 aosp 的 CPU 版本信息

cat /proc/cpuinfo

aarch64 是 ARMv8-A 架构中引入的64位指令集,AArch64 向后兼容基于32位指令集的 ARMv7-A 和之前别的一些 32 位 ARM 架构(也就是AArch32)。

 

注意:

按上面编译,一般逻辑没问题,涉及到网络访问走不通,原因是 AOSP android 系统没有 /etc 的网络解析文件。

用 android-ndk 编译,到这去下载:https://developer.android.google.cn/ndk/downloads?hl=zh-cn

版本兼容选择:https://www.cnblogs.com/fieldtianye/p/18012578

aarch64-linux-android28-clang 这个就表示兼容到 Android 9

可执行文件名称:program_name,写了一个简单的shell,放到代码根目录下执行

运行环境:Linux,Ubuntu 22 LTS。

rm program_name
go env -w CGO_ENABLED='1'
go env -w GOOS='android'
go env -w GOARCH='arm64'
go env -w CC='/usr/mine-soft/android-ndk-r26c/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android28-clang'

go build -o program_name main.go

go env -w CGO_ENABLED='1'
go env -w GOOS='linux'
go env -w GOARCH='amd64'
go env -w CC='gcc'
adb push ~/program_name /data/program_name

 

posted @ 2024-02-03 11:40  fieldtianye  阅读(286)  评论(0编辑  收藏  举报