# v2rayNG项目分析 ## 项目概述 v2rayNG是一款基于Android平台的V2Ray客户端应用程序,支持Xray core和v2fly core,主要用于网络代理和VPN服务。 ## 技术栈 - 开发语言 :主要使用Kotlin语言开发 - 构建系统 :Gradle Kotlin DSL (.kts格式) - 数据存储 :采用MMKV进行高效键值存储 - UI框架 :基于AndroidX和Material Design - 核心库 :通过JNI集成V2Ray/Xray核心功能 - 支持架构 :arm64-v8a、armeabi-v7a、x86_64、x86 ## 核心功能 1.多种运行模式 : - VPN服务模式(通过V2RayVpnService实现) - 代理模式(通过V2RayProxyOnlyService实现) 2.支持多种协议 : - VMess、VLESS、Trojan、Shadowsocks、Wireguard、HTTP、Socks等 - 每种协议都有对应的格式化器(如VmessFmt、VlessFmt等) 3.订阅管理 : - 支持批量导入服务器配置 - 自动更新订阅功能 4.路由规则 : - 支持自定义路由规则 - 内置多种路由规则集(白名单、黑名单等) - 支持Geoip和Geosite规则 5.分应用代理 : - 可以为不同应用单独设置代理策略 6.DNS设置 : - 支持自定义DNS服务器 - 支持Fake DNS功能 ## 项目结构 项目采用标准Android应用架构,主要代码位于 V2rayNG/app/src/main/java/com/v2ray/ang/ 目录下,按功能模块划分为多个包: - ui :界面相关代码,包括MainActivity、ServerActivity等 - service :服务相关代码,包括V2RayVpnService、V2RayProxyOnlyService等 - handler :处理器相关代码,包括V2RayServiceManager、V2rayConfigManager等 - dto :数据传输对象 - util :工具类 - fmt :各种协议格式处理类 ## 主要工作流程 1.用户在MainActivity中选择服务器配置 2.点击启动按钮,通过V2RayServiceManager启动对应服务(VPN或代理模式) 3.服务启动时,V2rayConfigManager生成配置文件 4.调用底层V2Ray核心库启动代理服务 5.通过NotificationManager显示通知和连接状态 ## 特色功能 - 多语言支持 :包含中文、英文、俄文、阿拉伯文等多种语言 - 深色模式 :支持系统深色模式 - 性能统计 :可以显示连接速度等统计信息 - 智能选择 :支持基于延迟自动选择最优服务器 ## 构建配置 - 项目支持两个产品变种(productFlavors):fdroid和playstore - 支持多种CPU架构的APK拆分 - 最低支持Android 5.0(API 21),目标API 35 总体而言,v2rayNG是一个功能全面、架构清晰的Android代理客户端,通过JNI集成V2Ray/Xray核心功能,为用户提供灵活、强大的网络代理解决方案。