本人 Android 开发,tailscale 的 android 项目是 GO 语言的 Gioview 写的,主项目中没找到关键的方法在哪边。安卓原生中怎么设置 URL 及创建后续连接呢?
1
shawndev 2023-09-25 15:52:13 +08:00 1
Makefile 中留意 DEBUG_APK 和 AAR 两个 target 。build.gradle 中声明依赖了这个 AAR 。
App 中调用 IPNService 实现开关 VPN ,实现方法为 native 方法 connect / disconnect / directConnect 。 这些 native 的方法是现在 cmd/tailscale/callbacks 中。 当收到对应的 Intent 后,这些 native 方法向对应的 chan 投递一条消息。 在 AAR 运行之后会从不同的 chan 取对应消息,然后通过 updateTUN 方法调用 VPNService 的对应 java 方法。这里的调用是通过 jni.go 实现的,jni.go 本质上是<jni.h>的 cgo 封装。 |
2
shawndev 2023-09-25 15:56:46 +08:00 1
还有一些比如调用 VPNService.protect 来避免路由环路之类的细节。
|