编译tun2socks用于Android项目
最近需要做一个Android端基于socks5协议网络流量转发的功能,找到一个还在维护更新的项目,具体的编译流程和使用如下。
一、配置go环境
(1)sdk下载地址为:https://go.dev/dl/
(3)解压下载的压缩包,linux建议放在/opt目录下
(3)配置环境变量
vim /etc/profile//添加如下配置
export GOROOT=/opt/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=$HOME/goprojectsource /etc/profile
(4)测试配置是否生效
go version
二、配置Android开发环境
下载AndroidStudio
,打开软件后配置Android SDK
环境、NDK
环境。配置基础Android
开发环境的过程省略,可参考网上其它文章。
三、编译项目
(1)创建goproject
目录
mkdir goproject
(2)安装依赖
go install golang.org/x/mobile/cmd/gomobile@latest
go get golang.org/x/mobile/bind
gomobile init
export DEST=$(pwd)/app/libs
mkdir -p DEST
(3)下载tun2socks项目
//创建目录
mkdir -p src/github.com/xjasonlyu
cd src/github.com/xjasonlyu
git clone https://github.com/xjasonlyu/tun2socks.git
//目录结构
/home/jhan/goproject/src/github.com/xjasonlyu/tun2socks
(4)编译项目
cd $GOPATH/src/github.com/xjasonlyu/tun2socks
gomobile bind -o $DEST/tun2socks.aar -target android $GOPATH/src/github.com/xjasonlyu/tun2socks/engine
ls $DEST # you should see tun2socks.aar and tun2socks-sources.jar
三、使用
ParcelFileDescriptor tunDevice = new Builder().addAddress(VPN_ADDRESS, 32).addRoute(VPN_ROUTE, 0).addDnsServer(VPN_DNS).addAllowedApplication("com.google.android.tethering").establish();engine.Key key = new engine.Key();
key.setMark(0);
key.setMTU(0);
key.setDevice("fd://" + tunDevice.getFd()); // <--- here
key.setInterface("");
key.setLogLevel("debug");
key.setProxy("socks5://127.0.0.1:1080"); // <--- and here
key.setRestAPI("");
key.setTCPSendBufferSize("");
key.setTCPReceiveBufferSize("");
key.setTCPModerateReceiveBuffer(false);engine.Engine.insert(key);
engine.Engine.start();