# VPN **Repository Path**: abbasspace/vpn ## Basic Information - **Project Name**: VPN - **Description**: 一个后端挂了的VPN。这个是Android端,使用OpenVPN作为第三方框架,JNI部分由老师完成。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-01-26 - **Last Updated**: 2026-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: VPN, v2ray ## README # Unlimited Proxy(Android VPN 客户端) 一款面向 Android 的 **VPN 客户端示例 / 开源项目**,使用系统 **VpnService** 建立隧道,通过 **OpenVPN** 协议与服务器通信。应用层提供选服、连接开关、使用时长提示等界面。 > **当前状态(重要)**:原项目配套的 **后端接口与内置服务器节点均已失效**,按仓库默认配置 **无法建立可用连接**,应用 **暂不具备实际可用的联网能力**。本仓库 **仅作学习示例**(了解 Android VPN / OpenVPN 客户端集成与交互流程),请勿当作可依赖的 VPN 产品或服务使用。 > **技术说明**:本仓库代码中集成的是开源的 **OpenVPN for Android** 体系(`vpnLib2` 模块,`de.blinkt.openvpn` 包名),配置文件为 **`.ovpn`**。若你期望的是 **V2Ray** 核心(如 `v2ray-core` / VMess 等),需要另行集成;当前版本 **不包含 V2Ray 实现**。 --- ## 你能用它做什么 - 在 Android 设备上 **导入/使用 OpenVPN 配置**(`.ovpn`),经系统 VPN 接口联网。 - 从内置 **服务器列表 JSON** 选择节点,应用会把对应配置复制到应用目录并发起连接。 - 体验 **连接状态、剩余可用时长** 等与业务相关的 UI 逻辑(具体规则见 `VPNUtils` 等类)。 请仅在 **合法合规** 的前提下使用,并确保你有权使用所连接的服务器与网络资源。 --- ## 界面截图 以下为应用运行界面示意(实际效果以设备与系统版本为准)。原图位于仓库根目录 [`screenshot/`](screenshot/) 文件夹。 | 主页 | 服务 / 节点列表 | 系统 VPN 授权(创建 VPN 连接) | | :---: | :---: | :---: | | ![主页界面](screenshot/HomeScreenshot.png) | ![服务列表界面](screenshot/ServiceScreenshot.png) | ![创建 VPN 连接授权界面](screenshot/CreateVPNScreenshot.png) | --- ## 工程结构(一目了然) ``` vpn/ ├── screenshot/ # 界面截图(README 展示用) ├── app/ # 主应用(包名:com.yw.unlimitedproxy) │ ├── build.gradle # 应用依赖:Glide、OkHttp、Gson、Material 等 │ └── src/main/ │ ├── AndroidManifest.xml # 入口 Splash、各 Activity、OpenVPNService │ ├── java/com/yw/unlimitedproxy/ │ │ ├── App.java # Application:初始化目录、SP、数据管理 │ │ ├── ui/ # 界面:启动、主页、协议、服务器、FAQ、关于等 │ │ ├── vpn/ # VPN 封装(单例、启停、状态监听) │ │ ├── model/ # 服务器列表、弹窗管理等数据层 │ │ ├── adapter/ # ListView 等列表适配器 │ │ ├── utils/ # 网络、文件、时间、OpenVPN 辅助工具等 │ │ └── view/ # 自定义控件(如开关、工具栏) │ ├── assets/ # 内置资源(重要) │ │ ├── masterUnlimitedProxy_localserver.json # 服务器与 .ovpn 文件名映射 │ │ └── *.ovpn # 各节点 OpenVPN 配置示例 │ └── res/ # 布局、主题、图标、字符串等 ├── vpnLib2/ # OpenVPN Android 库模块(library) │ ├── build.gradle │ └── src/main/ │ ├── AndroidManifest.xml # OpenVPNService、Disconnect 相关组件 │ └── java/de/blinkt/openvpn/ # OpenVPN 核心逻辑与 JNI 封装 ├── gradle/ # Gradle Wrapper 配置 ├── settings.gradle # 模块:app、vpnLib2;根项目名 Unlimited Proxy ├── build.gradle # 顶层 Android Gradle 插件版本 ├── gradle.properties ├── gradlew / gradlew.bat └── README.md # 本说明 ``` --- ## 主要依赖与开源组件 | 用途 | 说明 | |----------------|------| | **VPN 隧道** | `vpnLib2`:基于 **OpenVPN for Android**(`de.blinkt.openvpn`) | | **界面与工具** | AndroidX(AppCompat、Material、ConstraintLayout)、ImmersionBar、Lottie、Glide | | **网络与数据** | OkHttp、Gson | 完整版本号见 `app/build.gradle` 与 `vpnLib2/build.gradle`。 --- ## 编译与运行环境 - **Android Studio**(建议支持 **Android Gradle Plugin 7.2.x** 的版本) - **JDK 8**(`compileOptions` 为 Java 8) - **compileSdk**:30 - **minSdk**:26 - **applicationId**:`com.yw.unlimitedproxy` 首次打开项目后,由 Android Studio 同步 Gradle;连接设备或模拟器后 **Run** 即可。 > `settings.gradle` 中配置了阿里云等 Maven 镜像,便于国内拉取依赖;若你所在网络可直接访问 Google Maven,也可按需调整。 --- ## 配置服务器列表(给二次开发者) 1. 编辑 **`app/src/main/assets/masterUnlimitedProxy_localserver.json`**:定义全部节点、快速节点等(结构对应 `VPNDataManager` + `ServerBean` / `ServerData`)。 2. 将对应的 **`.ovpn`** 文件放入 **`app/src/main/assets/`**,并在 JSON 里填写与代码一致的 **文件名/路径**(运行时会把配置写到 `getExternalFilesDir` 下再交给 OpenVPN 启动)。 3. 代码中 **`VPNUtils.startVpn`** 会读取本地文件并调用 `OpenVpnApi.startVpn(...)`,请保证 **文件名与 JSON 中 `server_address` 等字段一致**,否则无法读到配置。 远程动态配置:项目中留有从网络更新配置的注释入口,可按需自行实现。 --- ## 权限说明(Manifest 摘要) - **网络**:`INTERNET`、`ACCESS_NETWORK_STATE` - **VPN**:通过 `OpenVPNService` + `BIND_VPN_SERVICE` 由系统授权 - **前台服务**:`FOREGROUND_SERVICE`(随系统与库版本可能还有细分权限需求,以实际 targetSdk 为准) - **存储**(历史/兼容):`READ/WRITE_EXTERNAL_STORAGE` 等,用于配置文件与外部目录;高版本 Android 请以分区存储策略为准做适配。 --- ## 免责声明 - 本项目仅用于 **学习与交流** 开源 VPN 客户端集成方式。 - 使用者需自行遵守所在地 **法律法规** 及服务提供商条款;作者与贡献者 **不对** 任何滥用、数据泄露或违法行为负责。 - 内置示例节点与配置 **已失效 / 仅为演示**(与上文「当前状态」一致),请勿在未完成自有节点与安全审计的情况下用于生产环境。 --- ## 许可证 请查看仓库中各模块自带的 **LICENSE** 或上游项目说明(OpenVPN for Android 及其依赖均有各自许可证)。若本仓库未单独放置根目录 `LICENSE` 文件,建议维护者补充明确的开源协议文件以便分发。