Assistance with Go and Kotlin interop, VPN architecture, and tunnel building in the BlockAds Android app. Use when adding features to the Go tunnel, working with gomobile, or modifying the VPN service.
This skill provides expert guidance on the blockads-android project, which combines a Go-based VPN tunnel (tunnel/) with an Android Kotlin application (app/src/main/java/...). It helps handle gomobile interop constraints, architectural patterns for the VPN service, and building/debugging the tunnel.
When adding a new feature or modifying existing logic in the Go tunnel:
.go files in the tunnel/ directory (e.g., tunnel/engine.go).[]byte, basic interfaces)../scripts/build_tunnel.sh or the Gradle task ../gradlew buildGoTunnelreferences/gomobile-interop.md.When integrating new Go tunnel features into Android:
GoTunnelAdapter.kt or VpnService.kt to call the newly bound Go methods.LogCallback, DomainChecker) match the updated Go interfaces.references/architecture.md.LogCallback interface to Kotlin. To debug DNS, check DnsLogDao or add prints in the Kotlin callback.libsu for a root-based transparent proxy mode as an alternative to VpnService. Check RootProxyService and IptablesManager for related logic. See references/root-proxy.md for architecture details.RootProxyService and iptables transparent proxy architecture.gomobile bind.