Clash 文档中心中文使用手册

Clash Meta 手机端(Android):怎样确认请求授权的应用来源

Clash Meta 手机端(Android):怎样确认请求授权的应用来源。了解适用条件、操作步骤与常见问题的排查方法。

更新于 2026/10/4

系统对话框能证明什么

首次连接时,Android 会显示连接请求对话框,要求确认信任该 VPN。对话框由系统在 VpnService.prepare() 返回 Intent 之后拉起,形态接近其他权限确认。它能够证明:发起方是一个在清单中声明了 VpnService、并以 BIND_VPN_SERVICE 保护的应用,系统准备把它设为当前用户或工作资料的 VPN 服务。它不能证明:安装包来自哪条渠道、是否被重新签名、配置里的节点是否可信。文档把信任该 VPN 交给使用者自行判断。

因此,确认来源要在对话框之外完成。Clash Meta for Android 官方仓库写明:它是 Clash.Meta 的图形界面;对外给出的应用包名为 com.github.metacubex.clash.meta;自行编译时可在 local.properties 设置 custom.application.id,未设置时相关 applicationId 为 com.github.metacubex.clash,并可能带后缀。若本机包名与预期不一致,对话框里即使出现相近名称,也不能当作同一来源。

同一时刻只能准备一个 VPN 应用。若对话框指向的不是刚刚操作的那个安装包,应拒绝,并到应用信息中核对包名后再决定是否重新发起。

用包名、服务声明和安装渠道交叉核对

先按仓库核对标识。官方自动化说明中的包名为 com.github.metacubex.clash.meta。外部控制通过 com.github.kr328.clash.ExternalControlActivity,动作带 com.github.metacubex.clash.meta.action 前缀,包括 TOGGLE_CLASH、START_CLASH、STOP_CLASH。导入配置可使用 clash://install-config 或 clashmeta://install-config。能够响应这些意图,只说明安装包实现了仓库描述的外部入口,仍须结合签名与安装来源,不能单凭意图存在就授权。

再按系统声明核对。VPN 服务必须继承 VpnService,清单权限为 BIND_VPN_SERVICE,intent-filter 为 android.net.VpnService,只有系统能绑定。使用者可在设置的网络和互联网 VPN 页查看已接受过连接请求的应用。列表项对应的是曾经授权的应用,并可以在此忘记。若列表出现名称相近但包名不同的项,说明设备上有多个 VPN 客户端,授权对象必须以包名为准。

最后看安装渠道。仓库展示了 F-Droid 获取方式,并给出从源码构建所需的 OpenJDK、Android SDK、CMake、Golang 以及签名配置。从未知来源安装的包,即使能弹出系统 VPN 对话框,也只说明它实现了 VpnService,不说明与 MetaCubeX/ClashMetaForAndroid 仓库一致。工作资料与个人资料隔离,必须在实际安装该应用的资料内核对。

判断依据和无法确认时的下一步

可以认为来源一致的条件,建议同时满足:包名与所选发布渠道声明一致;VPN 设置页中的应用与该包名对应;首次对话框出现在主动启动该应用服务之后,而不是无操作弹出。缺任一条件,应拒绝授权。

拒绝后系统不会建立 TUN。若已经误授权,到 VPN 设置页忘记该应用。系统停止连接时会走 onRevoke(),应用应释放套接字与文件描述符。忘记之后,原应用必须重新 prepare() 才能再连。

若对话框频繁出现但应用信息对不上,检查是否存在第二个 VPN 应用、工作资料是否在重复请求、always-on 是否在开机时拉起了无法识别的服务。Android 7.0 及以上的 always-on 由系统启动服务,界面上仍应能在 VPN 设置页看到对应应用。无法确认来源时,不要为了接通而接受请求;先处理不明安装包,再从能够核对包名与构建说明的渠道安装。外部控制意图不能代替来源核验,只能控制已经安装且已经声明的服务。

https://developer.android.com/develop/connectivity/vpn https://github.com/MetaCubeX/ClashMetaForAndroid

返回文章索引使用教程