Repository navigation
Releases: thecoolboyhan/fishing-funds
Release list
v0.2.0
Fishing Funds v0.2.0
基金 / 大盘 / 股票 / 虚拟货币状态栏小应用,基于 Electron + React 19 构建。支持 macOS、Windows、Linux 桌面端,以及 Android 移动端(通过 Capacitor 共享同一套渲染层)。
本版本(v0.2.0)主要变更
- 基金估值数据源切换为新浪:自 2026-10 起,受监管影响,天天基金 / 腾讯的估值接口逐步下线。新增新浪估值源
hq.sinajs.cn/list=fu_{code};货币基金降级为显示净值;新增GetNetWorthTrendFromEastmoney作为净值走势补充。 - 修复 Referer 拼写错误:
GetFundGZList请求头ttp://修正为https://,恢复估值列表正常拉取。 - 修正打包版本号:规范化
release/app/package.json的version与author,electron-builder 现读取该文件而非根目录,避免版本号错乱。 - 货币排行榜数据源切换为 Coingecko:原 CoinCap v2 API 已停止服务,改用 Coingecko
/coins/markets;移除旧的 CoinCap 相关函数,并修复GetHistoryFromCoingecko因Accept-Encoding: gzip未解压导致的走势白图问题。
下载
| 平台 | 文件 |
|---|---|
| macOS(Intel) | Fishing.Funds-0.2.0.dmg |
| macOS(Apple Silicon) | Fishing.Funds-0.2.0-arm64.dmg |
| Windows | Fishing.Funds.Setup.0.2.0.exe |
| Linux(x64) | Fishing.Funds-0.2.0.AppImage |
| Linux(arm64) | Fishing.Funds-0.2.0-arm64.AppImage |
| Android | app-release-unsigned.apk |
已知事项
- 桌面端安装包为未签名构建:macOS 需在「系统设置 → 隐私与安全性」中手动允许;Windows 会提示 SmartScreen;Linux AppImage 需
chmod +x后运行。 - Android 为未签名 APK,无法直接安装。需用自有密钥在本地执行
assembleRelease重新签名后再安装(详见仓库AGENTS.md§9.5)。 - 货币排行榜偶发因 Coingecko 限流(HTTP 429)为空,手动刷新即可恢复。
数据源说明
基金估值来自新浪,净值走势来自东方财富;行情 / 大盘来自公开接口;货币行情来自 Coingecko。接口如有变动,请以仓库最新代码为准。
v0.1.0 — 独立维护版首个版本(含安卓客户端)
v0.1.0 — 首个独立维护版本(含安卓客户端)
本项目派生自
1zilc/fishing-fundsv8.7.1(GPL-3.0),现由本仓库独立维护,与上游不再同步。
从这一版起,版本号改用0.1.0独立编号,不再跟随上游。
四端共用一份渲染层代码:桌面端(macOS / Windows / Linux)常驻菜单栏,安卓端全屏应用。
界面
截图为 Pixel 8 (API 34) 模拟器实拍,数据为当日实时行情。
新增:安卓客户端
android-capacitor 分支把同一份 src/renderer 装进了 Capacitor 6 原生壳,与桌面三端共用全部业务代码,
平台差异只通过 window.contextModules 桥隔离(安卓侧由原生插件 ContextModulesPlugin.java 实现)。
- 全屏适配、触摸友好的字号(基准 13px,可在设置中调到 16px)
- 首次启动内置 4 只基金 + 4 只股票的示例自选,可直接体验;在界面上删除或替换即可
- 品牌化的应用图标与启动画面
相对上游 v8.7.1 修复的问题
安卓化过程暴露了一批问题,其中一部分同样影响桌面端:
| 类别 | 问题 | 后果(修复前) |
|---|---|---|
| 存储 | electronStore 双重编码:写数组/对象,读回来是字符串 |
钱包配置解析静默失效,新增的自选重启后丢失 |
| 存储 | storeCover 参数非法时先 clear() 再什么都不写 |
整个命名空间被静默清空(恢复备份会丢全部配置) |
| 网络 | 原生栈被服务端按客户端指纹掐断,而 WebView 的 fetch 能通 |
股票 / 指数 / 分时 / K线 数据全空 |
| 时序 | 持久化监听器注册晚于初始化写入 | 首次启动的配置写入全部丢失,永不落盘 |
| 导出 | saveJsonToCsv 漏掉所有数据行 |
导出只有 BOM 的空 CSV |
| UI | 移动端 CSS 误伤 325px 宽的桌面小窗 | 菜单栏小窗布局错乱、antd Switch 变形 |
其中「双网络栈互补」是关键设计:原生 OkHttp 栈与 WebView 浏览器栈能力互补——前者能读无 CORS 头的静态数据,
后者在部分接口上能绕过服务端的客户端指纹识别。两者互为兜底,缺一都会丢一半数据。
品牌化
应用图标、启动画面与应用内 logo 均已更换为本项目自己的品牌标识,
并清除了指向旧官网(ff.1zilc.top)的所有链接——「设置 → 更多」、检查更新跳转、
导出备份元数据、加载屏底部地址,现已全部指向本仓库与新官网;
同时移除了上游的页面访问上报(display:none 的隐藏 webview),应用不含任何第三方统计 SDK。
数据源可用性
基金估值支持多数据源,可在「设置 → 基金接口」切换。不同网络环境下可用性不同,实测记录:
| 源 | 端点 | 受限网络出口实测 |
|---|---|---|
| 东方财富-天天基金 | fundgz.1234567.com.cn |
★★★★★(推荐,最快最准;但部分出口会被 CDN 返回缓存的 404 页) |
| 同花顺-爱基金 | fund.10jqka.com.cn |
★★★★☆(受限网络下的可靠备选) |
| 支付宝-蚂蚁基金 | www.fund123.cn |
★★★☆☆ |
| 腾讯证券 | web.ifzq.gtimg.cn |
★☆☆☆☆(上游接口已下线) |
若基金列表为空且能排除代码问题,先切换数据源。
安装包
| 项 | 值 |
|---|---|
| 文件 | fishing-funds-android-0.1.0.apk |
| applicationId | com.thecoolboyhan.fishingfunds |
| 版本 | versionCode 1 / versionName 0.1.0 |
| 大小 | 约 4.4 MB |
| 签名 | 自签名 release 密钥(apksigner 验证 v1 + v2 均通过) |
| SHA-256 | 见下方「校验」 |
⚠️ 如果你之前装过v8.7.1-fork.1(versionCode 2),无法直接覆盖安装本包 —— Android 不允许降级 versionCode,
需要先卸载旧版(会清掉本地配置,自选会回到示例数据)。之后同版本线即可正常覆盖升级。
已知边界
- 安卓端原生弹窗 / 文件选择器是安全默认值(一律按「取消」),因此删除自选、导出 CSV/JSON、备份导入导出不生效
- 新闻「查看原文」依赖桌面
<webview>标签,安卓端暂不可用 - 货币接口(
api.coingecko.com)在受限网络下需要代理 - 未做 release 混淆(
minifyEnabled false)
从源码构建
npm install # 用 npm,不要 pnpm(沙箱环境 pnpm 会 EPERM)
npm run build
npx cap sync android
cd android && ./gradlew assembleDebug # 需 JDK 17 + ANDROID_HOME发布签名读取 android/keystore.properties(与 .jks 均不入库);缺失时自动回退为不签名,不会因缺密钥而构建失败。
许可
GPL-3.0(继承上游)。锚定上游 v8.7.1 —— 其 8.8.0 把反爬逻辑抽成了私有子模块,公开源码无法编译出可运行的程序。
v8.7.1-fork.1 — 安卓端可用性修复版
v8.7.1-fork.1 — 安卓端可用性修复版
本仓库是
1zilc/fishing-fundsv8.7.1(GPL-3.0)的个人维护分支,四端共用一份渲染层代码。
本次发布新增安卓客户端(Capacitor 6 原生壳),并把安卓化过程中暴露的问题一并修掉 —— 其中一部分同样影响桌面端。
界面
截图为 Pixel 8 (API 34) 模拟器实拍,数据为当日实时行情。
修复内容
存储(同样影响桌面端)
| 问题 | 后果 | 修法 |
|---|---|---|
electronStore 双重编码:写数组/对象,读回来变成字符串 |
钱包配置解析静默失效,新增的基金/股票重启后丢失 | toJson / storeCover / saveJsonToCsv 改用 org.json 基类 JSONObject / JSONArray 判断 |
storeCover 在参数非法时先 clear() 再什么都不写 |
整个命名空间被静默清空(恢复备份会丢全部配置) | 非法值直接 reject,不再清空 |
saveJsonToCsv 漏掉所有数据行 |
导出只有 BOM 的空 CSV | 同上,按基类判断 |
网络
| 问题 | 后果 | 修法 |
|---|---|---|
原生 OkHttp 栈被服务端按客户端指纹掐断(unexpected end of stream) |
股票 / 指数 / 分时 / K线 数据全空 | 新增双网络栈互补:原生栈失败(__failed 标记)时用 WebView 的 fetch 重试一次,两栈都失败才回落空结果;两边日志完整,非静默降级 |
实测同一出口 IP、同一时刻、同一 URL:
push2的stock/get、trends2、kline在原生栈全挂而浏览器栈 200;反之无 CORS 头的静态 js 只有原生栈能读 —— 两条栈缺一不可。
时序 / 渲染
| 问题 | 后果 | 修法 |
|---|---|---|
| 持久化监听器注册晚于初始化 dispatch | 首次启动的配置写入全部丢失(WALLET_SETTING 等永不落盘) |
startListening() 提到 InitPage.init() 第一行,并加幂等保护 |
| 移动端 CSS 用了裸媒体查询 | 误伤 325px 宽的桌面菜单栏小窗,把 antd Switch 撑成灰色方块 | 移动端规则全部挂 html.platform-android 下 |
给所有 button / a 加 min-height |
撑破固定 32px 的工具栏,「管理 / 榜单」文字位置偏上 | 只做视口级适配,不碰组件尺寸 |
其它
- 首次启动内置示例自选(4 基金 + 4 股票,含示意持仓),方便直接体验;仅在本地无配置时生效,不覆盖既有数据
- 基准字号 12 → 13,设置里字号滑杆上限 14 → 16
request的 catch 补Log.e并附加__failed/__error,数据层故障不再完全静默
数据源可用性
基金估值支持多数据源,可在「设置 → 基金接口」切换。不同网络环境下可用性不同,实测记录:
| 源 | 端点 | 受限网络出口实测 |
|---|---|---|
| 东方财富-天天基金 | fundgz.1234567.com.cn |
★★★★★(推荐,最快最准;但部分出口会被 CDN 返回缓存的 404 页,桌面端同样拿不到) |
| 腾讯证券 | web.ifzq.gtimg.cn |
★☆☆☆☆(上游接口已下线,返回 interface offline) |
| 支付宝-蚂蚁基金 | www.fund123.cn |
★★★☆☆ |
| 同花顺-爱基金 | fund.10jqka.com.cn |
★★★★☆(受限网络下的可靠备选) |
若基金列表为空且能排除代码问题,先切数据源。
安装包
| 项 | 值 |
|---|---|
| 文件 | fishing-funds-android-8.7.1-fork.1.apk |
| applicationId | com.thecoolboyhan.fishingfunds |
| 版本 | versionCode 2 / versionName 8.7.1-fork.1 |
| 大小 | 4.4 MB |
| 签名 | 自签名 release 密钥(apksigner 验证 v1 + v2 均通过) |
| SHA-256 | 816b6cf6dbfb63a5b448d07e3d25b77050854a2d24288e3651ffb10fb856ae38 |
⚠️ 如果你之前装的是 debug 版(app-debug.apk),首次安装本包需要先卸载旧版 —— 两者签名不同,Android 不允许覆盖安装。卸载会清掉本地配置,自选基金/股票会回到示例数据。
已知边界
- 安卓端原生弹窗 / 文件选择器是安全默认值(一律按「取消」),因此删除自选、导出 CSV/JSON、备份导入导出不生效
- 新闻「查看原文」依赖桌面
<webview>标签,安卓端暂不可用 - 货币接口(
api.coingecko.com)在受限网络下需要代理 - 未做 release 混淆(
minifyEnabled false)
从源码构建
npm install # 用 npm,不要 pnpm(沙箱环境 pnpm 会 EPERM)
npm run build
npx cap sync android
cd android && ./gradlew assembleDebug # 需 JDK 17 + ANDROID_HOME发布签名读取 android/keystore.properties(与 .jks 均不入库);缺失时自动回退为不签名,不会因缺密钥而构建失败。
许可
GPL-3.0(继承上游)。锚定 v8.7.1 —— 上游 8.8.0 把反爬逻辑抽成了私有子模块,公开源码无法编译出可运行的程序。



