3568 Android 显示不支持VPN(第三方VPN应用)
概要:本文介绍了在 RK3568 Android 11 系统中,第三方 VPN 应用无法正常使用的问题。通过排查发现系统缺少必要的 VpnDialogs 组件,最终通过修改编译配置并重新编译系统解决了问题。
1. 问题描述
在 RK3568,Android 11 系统中,虽然系统设置中的 VPN(L2TP/IPsec)测试正常,但使用第三方 APK 建立 VPN 时(测试了客户软件、clash、lantern)均无法正常连接。
1.1 各应用表现
- 客户软件:一个电网类 App,提示“设备不支持 VPN”
- Clash:同样提示“设备不支持 VPN”
- Lantern:VPN 状态反复开关,无法稳定连接
logcat 日志中,客户软件和 clash 没有明显报错,而 lantern 提供了有价值的错误日志。
1.2 共通日志信息
三个软件的日志中都出现了如下信息:
ActivityTaskManager: START u0 {cmp=com.android.vpndialogs/.ConfirmDialog}
但系统中并未弹出 VPN 连接确认窗口。
1.3 Lantern 报错信息
Lantern 的日志中还报错如下:
10221 10221 E flutter : [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: PlatformException(unknownError, Unable to find expl
icit activity class {com.android.vpndialogs/com.android.vpndialogs.ConfirmDialog}; have you declared this activity in your AndroidManifest.xml?, null, null)
2. 问题排查
执行以下命令检查系统中是否存在 com.android.vpndialogs:
pm path com.android.vpndialogs
- 结果无输出,确认系统缺少该组件。
尝试从网上获取 Android 11 版本的 VpnDialogs 安装包并手动安装,安装后应用可启动但会报其他错误。
3. 问题解决
3.1 修改系统编译配置
在 build/make/target/product/handheld_system.mk 文件中添加如下内容:
diff --git a/build/make/target/product/handheld_system.mk b/build/make/target/product/handheld_system.mk
index 25cb215283..009f51e6dc 100644
--- a/build/make/target/product/handheld_system.mk
+++ b/build/make/target/product/handheld_system.mk
@@ -68,6 +68,7 @@ PRODUCT_PACKAGES += \
TeleService \
Traceur \
UserDictionaryProvider \
+ VpnDialogs
PRODUCT_SYSTEM_SERVER_APPS += \
3.2 重新编译系统
完成修改后,重新编译系统镜像并刷入设备,第三方 VPN 应用功能恢复正常,VPN 确认窗口也能正常弹出。
留下评论