eliotcougar f4f992eb9b Deduplicate subscription IDs when reading the saved index (#6172)
A saved SUB_IDS array can contain the same GUID more than once. Loading
it verbatim creates repeated subscription rows with identical Compose
and reorderable-list keys, which can crash the subscription screen.

Deduplicate IDs in the shared reader while preserving the first-seen
order and mutable-list contract. This protects every index consumer
without changing subscription records, generating replacement IDs, or
adding writes during reads. Different subscriptions with identical or
blank names remain separate.

Add six regression tests for duplicate rows, stable ordering, read-only
decoding, mutable round trips, repeated names, and existing empty/invalid
input behavior. Three assertions fail on unchanged upstream; all six
pass with the fix. The full 63-test suite and Play Store debug build pass.

On the API 37.1 Pixel 9 Pro emulator, a deliberately duplicated saved
index loaded each subscription once, retained first-occurrence order,
reopened safely, and edited the correct record. The raw index remained
duplicated throughout the check; no app crash was observed.
2026-09-05 14:54:46 +08:00
2026-08-29 15:59:49 +08:00
2026-08-21 10:21:03 +08:00
2026-08-29 15:59:49 +08:00
2026-08-29 15:59:49 +08:00
2023-11-17 14:15:29 +08:00
2026-08-29 15:59:49 +08:00
.
2023-01-12 14:35:38 +08:00
2026-07-01 20:20:39 +08:00

v2rayNG

A V2Ray client for Android, support Xray core and v2fly core

API Kotlin Version GitHub commit activity CodeFactor GitHub Releases Chat on Telegram


Download / 下载

Download the latest release here:

在这里下载最新版本:

https://github.com/2dust/v2rayNG/releases

Tip

v2rayNG is the mobile version. For the desktop version, please visit the v2rayN
v2rayNG 是手机版,电脑版请访问 v2rayN

https://github.com/2dust/v2rayN


Geoip and Geosite

  • geoip.dat and geosite.dat files are in Android/data/com.v2ray.ang/files/assets (path may differ on some Android device)
  • download feature will get enhanced version in this repo (note: it needs a working proxy)
  • latest official domain list and ip list can be imported manually
  • possible to use a third-party dat file in the same folder, like h2y

More in our wiki

Geoip 与 Geosite

  • geoip.dat 和 geosite.dat 文件位于 Android/data/com.v2ray.ang/files/assets(部分设备路径可能不同)
  • 下载功能将获取该 仓库 中的增强版本(注意:此功能需要一个可用的代理)
  • 最新官方 域名列表 和 IP 列表 可手动导入
  • 也可在同一文件夹中使用第三方 dat 文件,例如 h2y

更多内容请见我们的 wiki


Development guide / 开发指南

Note

  • Android project under the V2rayNG folder can be compiled directly in Android Studio, or using the Gradle wrapper. But the v2ray core inside the aar is (probably) outdated.
  • The aar can be compiled from the Golang project AndroidLibV2rayLite or AndroidLibXrayLite. For a quick start, read the guides for Go Mobile and Makefiles for Go Developers.
  • v2rayNG can run on Android Emulators. For WSA, VPN permission needs to be granted via appops set [package name] ACTIVATE_VPN allow.

提示

  • V2rayNG 文件夹下的 Android 项目可直接在 Android Studio 中编译,或使用 Gradle wrapper 编译。但 aar 内置的 v2ray core(可能)已过时。
  • aar 可由 Golang 项目 AndroidLibV2rayLite 或 AndroidLibXrayLite 编译而成。快速入门可参考 Go Mobile 指南和 Makefiles for Go Developers。
  • v2rayNG 可在 Android 模拟器上运行。对于 WSA,需要通过 appops set [package name] ACTIVATE_VPN allow 授予 VPN 权限。

GPG Verification / GPG 签名校验

Release files are signed with GPG to verify authenticity and integrity, helping prevent mirror, ISP, or CDN hijacking.

发布文件已使用 GPG 签名,可用于校验文件真实性与完整性,预防镜像站、运营商或 CDN 劫持。

Fingerprint / 公钥指纹

7694 5E9F 3E9A 168F 8070 F195 805D 661C
134D FAF6 8903 C199 463C 31E5 AE90 3AE0

Community / 社区

Telegram Group / Telegram 群组:

https://t.me/v2rayN

Telegram Channel / Telegram 频道:

https://t.me/github_2dust

S
Description
Amnezia support v2rayNG fork
Readme GPL-3.0
37 MiB
0 Stars 1 Watchers 0 Forks
Languages
Kotlin 95.5%
HTML 4.2%
Shell 0.3%