diff --git a/client/android/app/src/main/AndroidManifest.xml b/client/android/app/src/main/AndroidManifest.xml index 8e0188f..99b3c2b 100644 --- a/client/android/app/src/main/AndroidManifest.xml +++ b/client/android/app/src/main/AndroidManifest.xml @@ -4,6 +4,9 @@ + + + diff --git a/client/android/app/src/main/kotlin/com/pangolin/pangolin_vpn/PangolinVpnService.kt b/client/android/app/src/main/kotlin/com/pangolin/pangolin_vpn/PangolinVpnService.kt index 6c96801..c881953 100644 --- a/client/android/app/src/main/kotlin/com/pangolin/pangolin_vpn/PangolinVpnService.kt +++ b/client/android/app/src/main/kotlin/com/pangolin/pangolin_vpn/PangolinVpnService.kt @@ -391,7 +391,9 @@ class PangolinVpnService : VpnService(), PlatformInterface, CommandServerHandler runCatching { box.setMTU(ni.mtu) } box.addresses = StringArray( ni.interfaceAddresses.mapNotNull { ia -> - val host = ia.address?.hostAddress ?: return@mapNotNull null + // 砍掉 IPv6 link-local 的 zone 标识(如 %rmnet_data0)—— + // sing-box netip.ParsePrefix 不接受 prefix 内含 zone,否则 panic。 + val host = ia.address?.hostAddress?.substringBefore('%') ?: return@mapNotNull null "$host/${ia.networkPrefixLength}" }.iterator() )