This repository has been archived by the owner on Mar 17, 2024. It is now read-only.
关于安卓app #164
e1732a364fed
started this conversation in
General
关于安卓app
#164
Replies: 1 comment
-
由于现在支持了tun,安卓app的制作可以参考 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
参考现有项目
1、
shadowsocks-android,始于大概 13年5月,一开始是 Scala 写的, 到v4.4.0 就变成了 kotlin写的(17年12月),到如今已经内置了一些rust成分
https://github.com/shadowsocks/shadowsocks-android
2、
v2rayNG, 始于大概19年5月
https://github.com/2dust/v2rayNG
实际上代码简单易懂,比较符合vs的逻辑。
3、
SagerNet,始于大概21年4月
https://github.com/SagerNet/SagerNet
是继承自 shadowsocks-android 的
https://t.me/s/sagernet?before=31
若不信,可仔细对比 https://github.com/nekohasekai/SagerNet/tree/0.1-rc01 以及 https://github.com/shadowsocks/shadowsocks-android/tree/v4.4.0/
架构是类似的,都是这种插件模式。
代码方面
shadowsocks-android 以及 SagerNet 都属于比较高端的项目,咱高攀不起,先学习简单的 v2rayNG。
v2rayNG
直接阅读v2rayNG的代码即可了解。方法是,先查看layout的那个按钮的名称("fab"),然后在mainActivity里找到对应的按钮功能(startV2Ray),然后就找到 service/V2RayServiceManager -> V2RayVpnService/V2RayProxyOnlyService
其中 V2RayProxyOnlyService 简单,相对好理解。
读懂 V2RayVpnService 要参考 谷歌文档。
谷歌文档
https://developer.android.com/guide/topics/connectivity/vpn
https://developer.android.com/reference/android/net/VpnService
https://developer.android.com/reference/android/net/VpnService.Builder
因为 谷歌的VPN类 是直接传递ip包的,所以 V2RayVpnService 通过调用 tun2socks 将ip包转换成socks协议进一步转发到 v2ray。
不过无论哪一个service,都要调用 V2RayServiceManager.startV2rayPoint
核心是
然后就要研究
https://github.com/2dust/AndroidLibV2rayLite
以考察它是怎么使用v2ray的
其代码在 interact.go,RunLoop -> pointloop ,基本就是给v2ray传输一个配置文件然后运行v2ray。
至此逻辑已经清晰。
关于tun2socks
原来,过去有一个叫 ambrop72的人,写了一个工具集叫 badvpn, 其中有一个工具叫 tun2socks, 后来他不在维护,被shadowsocks组织fork,现在在 https://github.com/shadowsocks/badvpn
安卓如何使用,可以参考
https://www.brobwind.com/archives/824
简单来说就是,安卓系统特殊一些,所以要额外一步操作。libancillary可以做到这一点(就是加了俩关于fd的辅助函数)
关于 tun2socks, libancillary 的编译代码
(https://github.com/2dust/AndroidLibV2rayLite/blob/master/tun2socks.mk),
是来自 鼻祖 shadowsocks-android 的如下文件
https://github.com/shadowsocks/shadowsocks-android/blob/master/core/src/main/jni/Android.mk
Beta Was this translation helpful? Give feedback.
All reactions