少于 1 分钟阅读 次阅读

概要:本文介绍了在 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 确认窗口也能正常弹出。

留下评论