2dust / v2rayNG

A V2Ray client for Android, support Xray core and v2fly core
https://1.2345345.xyz
GNU General Public License v3.0
36.52k stars 5.56k forks source link

关于 Issue#259 里开发者回复的疑问(内置 dat 文件并非增强版) #527

Closed IceCodeNew closed 3 years ago

IceCodeNew commented 4 years ago

开放替换dat文件可能会导致app不稳定 目前内置了 Loyalsoldier/v2ray-rules-dat 已经很全

这里开发者说的意思按道理来说意味着 apk 文件解包以后,assets 资源目录里看到的两个 dat 文件都是来自 https://github.com/Loyalsoldier/v2ray-rules-dat/releases ,那么随便从这里抓一个日子发布的 geosite.dat 文件,其大小都应该有好几 MB 的大小,但实际把最新版 v2rayNG 安装包解压可以看到内置的 geosite.dat 才不过几百 KB 而已,绝对不是来自 https://github.com/Loyalsoldier/v2ray-rules-dat 的增强版。

额外信息(可选)

image

预期行为

  1. apk 安装包解包后得到 assets 资源目录中 geosite.dat 文件大小在 4M 以上
  2. 在自定义配置指定路由规则时可以完整支持 https://github.com/Loyalsoldier/v2ray-rules-dat 发布的 dat 文件里包含的域名分类

实际行为

  1. apk 安装包解包后得到 assets 资源目录中 geosite.dat 文件大小只有几百 KB
  2. 在自定义配置指定路由规则时若包含以下项目,则启动内核时报错(找不到对应域名数据)
    "geosite:category-anticensorship",
    "geosite:category-dev",
    "geosite:category-media",
    "geosite:category-porn",
    "geosite:category-vpnservices",
    "geosite:deviantart",
    "geosite:disney",
    "geosite:epicgames",
    "geosite:google-scholar",
    "geosite:hbo",
    "geosite:nintendo",
    "geosite:pincong",
    "geosite:playstation",
    "geosite:signal",,
    "geosite:yande",
    "geosite:yyets"

复现方法

  1. 将上述条目添加到 APP 路由规则中
  2. 启动内核
  3. 在 logcat 项目卡查看报错日志

日志信息

通过 `adb logcat -s com.v2ray.ang GoLog V2rayConfigUtilGoLog Main` 获取日志。请自行删减日志中可能出现的敏感信息。 如果问题可重现,建议先执行`adb logcat -c`清空系统日志再执行上述命令,再操作重现问题。 ``` 07-30 10:11:56.976 I/GoLog ( 2795): v2ray.com/core/infra/conf/serial: failed to parse json config > v2ray.com/core/infra/conf: invalid field rule > v2ray.com/core/infra/conf: failed to parse domain rule: geosite:google-scholar > v2ray.com/core/infra/conf: failed to load geosite: GOOGLE-SCHOLAR > v2ray.com/core/infra/conf: country not found: GOOGLE-SCHOLAR 07-30 10:11:56.976 D/com.v2ray.ang( 2795): go.Universe$proxyerror: v2ray.com/core/infra/conf/serial: failed to parse json config > v2ray.com/core/infra/conf: invalid field rule > v2ray.com/core/infra/conf: failed to parse domain rule: geosite:google-scholar > v2ray.com/core/infra/conf: failed to load geosite: GOOGLE-SCHOLAR > v2ray.com/core/infra/conf: country not found: GOOGLE-SCHOLAR ```

环境信息

Android 9

elvisw commented 4 years ago

416

类似的Issue我也提过

IceCodeNew commented 4 years ago

416

类似的Issue我也提过

我不觉得这是类似的 issue,请你先看过我开头引用的开发者评论,我这里谈的不是加载第三方 dat 规则

2dust commented 4 years ago

有几个版本用过增强版,缺点是导致启动很慢和内存占用过大,之后又回原版了

IceCodeNew commented 4 years ago

有几个版本用过增强版,缺点是导致启动很慢和内存占用过大,之后又回原版了

可以理解,不过原版的 domain-list 也很早就包含上面的条目了(我整理出来 APP 内置 dat 所不包含的项目),是否可以考虑用类似 GitHub Actions 的途径,在发布 APP 时自动包含最新的原版 dat 文件。

@2dust

IceCodeNew commented 4 years ago

有几个版本用过增强版,缺点是导致启动很慢和内存占用过大,之后又回原版了

顺便一提,因为 .gitignore 的设置我现在已经看不到 assets 目录下两个 .dat 文件的更新状态了。 现在上游 v2ray/domain-list-community 已经停止更新并建议迁移到 v2fly/domain-list-community 上来,不知道这边编译新版本 APP 时如果涉及到自动化过程,是否有在 脚本/yaml 配置上迁移过去。 @2dust

mclovin-2k commented 4 years ago

建议方案1: 在assets里内置 原版和增强版 2套 dat文件,设置里增加“使用增强版DAT”选项。让用户自己根据设备性能决定使用哪套DAT。

建议方案2: 在项目中新增使用增强版DAT的 productFlavor,发布版的时候同时发布增强版 APK。(但是Google Play那边就只能上传普通APK,这个没办法了。)

yuhan6665 commented 4 years ago

I'm working on a feature to allow user replacement of these files

yuhan6665 commented 4 years ago

https://github.com/2dust/v2rayNG/pull/662