Ubuntu下使用GoMobile构建AndroidLibXrayLite/AndroidLibV2rayLite的arr包
前言
V2Ray 是 Project V 项目下的一个核心工具,主要负责网络协议、路由等网络通信功能的实现。Xray 是由 V2Ray 项目衍生出来的一个全新的网络代理工具,其目标是对 V2Ray 进行优化和改进,以提供更好的性能和功能。
V2Ray和Xray主要是使用 Go 语言( Golang)编写的。Go 是一种由 Google 开发的开源编程语言,它提供了丰富的标准库和并发支持,非常适合构建高性能的网络应用程序。go语言的项目可以通过Gomobile库将Go代码构建为可以在移动平台上运行的原生应用程序或依赖库。
AndroidLibV2rayLite和AndroidLibXrayLite 就是基于V2Ray和Xray的 Android 库,通过这个库,可以在 Android 应用中集成 V2Ray(Xray) 功能,实现网络代理、加密通信等功能。
- 本文构建环境
Ubuntu 22.04.3 LTS Desktop 64-bit
openjdk 17.0.10
Android sdk 34, NDK 26.2.11394342
go 1.22.1
1 搭建环境
1.1 安装jdk
1 | # 检查是否安装Jdk |
1.2 安装Android SDK
谷歌推荐使用Android Studio或者Command-line tools的 sdkmanager来下载Android sdk。
在Ubuntu的应用商店下载Android studio,安装完成并打开,然后从sdk manager中下载Androidsdk和ndk,
最后配置环境变量。
使用命令sudo gedit ~/.bashrc
打开 .bashrc 文件,在末尾添加以下内容并保存后,使用source ~/.bashrc
刷新配置。
1 | # Android sdk环境变量,路径根据下载位置修改 |
1.3 安装Go
- 在go官网下载Linux版本的压缩包,类似
go1.22.1.linux-amd64.tar.gz
- 解压缩:使用右键菜单
提取到``tar -xzf go1.22.1.linux-amd64.tar.gz
将文件解压到当前文件夹,解压后得到名为go
的文件夹,这是go的安装目录,它包含了编译器、标准库、工具和其他相关文件。 - 移动 文件夹到存放用户安装的软件和程序/usr/local/
1. 卸载旧版本并安装Go
1 | # 删除/usr/local/go的旧版本 |
2.配置环境变量
使用命令sudo gedit ~/.bashrc
打开 .bashrc 文件,在末尾添加以下内容并保存后,使用source ~/.bashrc
刷新配置。
1 | # 将 Go 可执行文件路径添加到 PATH 环境变量中,以便在命令行中直接运行 Go 工具。 |
3. 检查是否安装成功
1 | go version |
1.4 安装gomobile
gomobile 是一个用于构建和运行使用 Go 编写的移动应用程序的工具。
1 | # 使用go工具安装gomobile最新版,这会将gomobile下载至GOPATH定义的目录 |
下载完成后,需要进行初始化
1 | # 初始化gomobile,配置必要的环境和工具 |
2 编译AndroidLibXrayLite
2.1 下载
在AndroidLibXrayLite的Github仓库,下载该库。
1 | # 克隆项目 |
2.2 更新模块依赖
下载完成后在AndroidLibXrayLite的目录下输入以下命令。
1 | # 整理(tidy)项目的模块依赖关系 |
2.3 开始构建
命令:gomobile bind -v -androidapi 21 -ldflags='-s -w' ./
。
参数解释:
- -v:启用详细输出,显示更多细节信息。
- -androidapi 21:指定 Android API 的最低版本。在此示例中,指定为 Android API 版本 21。
- -ldflags=’-s -w’:指定链接器标志。-s 表示禁止包含符号表,-w 表示禁止包含调试信息。
- ./:指定要绑定的 Go 包的路径。. 表示当前目录,表示将当前目录中的 Go 包绑定为移动库。耐心等待构建完成,构建完成后当前目录的
1
2# 将 Go 项目构建为 Android 库
gomobile bind -v -androidapi 21 -ldflags='-s -w' ./libv2ray.aar
和libv2ray-sources.jar
即是目标文件,将aar包导入Android项目即可。
构建AndroidLibV2rayLite,流程与前面一样。
1 | # 下载项目 |
3 报错
1. ndk版本不匹配
1 | gomobile: no usable NDK in /home/zhg/Android/Sdk: unsupported API version 19 (not in 21..34), open /home/zhg/Android/Sdk/ndk-bundle/meta/platforms.json: no such file or directory |
这个错误表示gomobile找不到适用的 NDK。gomobile需要支持API版本在21到34之间的 NDK。这可能由于找不到ndk或者构建的ndk版本和已下载的ndk版本不匹配。
检查ndk环境变量配置是否正确,或者打开ndk主目录/meta/platforms.json文件查看当前ndk版本支持的最低和最高Android版本是否符合构建要求,不配则重新下载对应版本的ndk。
本文构建完成的aar文件已上传到Github