fix mobile android build

This commit is contained in:
Alexander Anisimov
2026-05-03 11:06:09 +03:00
parent 7e454c619a
commit 1fe085d7be
3 changed files with 31 additions and 11 deletions

1
go.mod
View File

@@ -15,6 +15,7 @@ require (
github.com/zarazaex69/gr v0.0.0-20260430043628-45b595f4fef0
golang.org/x/crypto v0.50.0
golang.org/x/mobile v0.0.0-20260410095206-2cfb76559b7b
google.golang.org/genproto v0.0.0-20260209200024-4cfbd4190f57
)
require (

2
go.sum
View File

@@ -345,6 +345,8 @@ google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9Ywl
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20260209200024-4cfbd4190f57 h1:uZSB/r2MjH9IsqpG2vRNSV1Juteix90oHe8oTcLW9tk=
google.golang.org/genproto v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:nGuPfp0lnDJcJD0J47StV0Skgnw3qMSQhjsLKiejq5Y=
google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0=
google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY=
google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac=

View File

@@ -15,7 +15,8 @@ import (
"github.com/openlibrecommunity/olcrtc/internal/logger"
"github.com/openlibrecommunity/olcrtc/internal/protect"
_ "golang.org/x/mobile/bind" // ensure gomobile bind is available
_ "golang.org/x/mobile/bind" // ensure gomobile bind is available
_ "google.golang.org/genproto/protobuf/field_mask" // keep gomobile on post-split genproto modules
)
// SocketProtector protects sockets from VPN routing on Android.
@@ -39,6 +40,13 @@ var (
errStartTimedOut = errors.New("olcRTC start timed out")
)
const (
defaultLink = "direct"
defaultTransport = "vp8channel"
dataTransport = "datachannel"
defaultDNSServer = "1.1.1.1:53"
)
//nolint:gochecknoglobals // Mobile bindings expose a singleton runtime controlled by the embedding app.
var (
mu sync.Mutex
@@ -144,7 +152,11 @@ func Start(carrierName, roomID, keyHex string, socksPort int, socksUser, socksPa
}
// StartWithTransport launches the client with an explicit transport for this start.
func StartWithTransport(carrierName, transportName, roomID, keyHex string, socksPort int, socksUser, socksPass string) error {
func StartWithTransport(
carrierName, transportName, roomID, keyHex string,
socksPort int,
socksUser, socksPass string,
) error {
mu.Lock()
ensureDefaultConfigLocked()
cfg := defaults
@@ -154,7 +166,12 @@ func StartWithTransport(carrierName, transportName, roomID, keyHex string, socks
return startWithConfig(carrierName, transportName, roomID, keyHex, socksPort, socksUser, socksPass, cfg)
}
func startWithConfig(carrierName, transportName, roomID, keyHex string, socksPort int, socksUser, socksPass string, cfg mobileConfig) error {
func startWithConfig(
carrierName, transportName, roomID, keyHex string,
socksPort int,
socksUser, socksPass string,
cfg mobileConfig,
) error {
mu.Lock()
defer mu.Unlock()
@@ -313,9 +330,9 @@ func registerDefaults() {
func ensureDefaultConfigLocked() {
defaultsSet.Do(func() {
defaults = mobileConfig{
link: "direct",
transport: "vp8channel",
dnsServer: "1.1.1.1:53",
link: defaultLink,
transport: defaultTransport,
dnsServer: defaultDNSServer,
vp8FPS: 60,
vp8BatchSize: 8,
}
@@ -324,12 +341,12 @@ func ensureDefaultConfigLocked() {
func normalizeTransport(value string) string {
switch value {
case "datachannel", "data", "dc":
return "datachannel"
case "vp8channel", "vp8":
return "vp8channel"
case dataTransport, "data", "dc":
return dataTransport
case defaultTransport, "vp8":
return defaultTransport
default:
return "vp8channel"
return defaultTransport
}
}