diff --git a/CLAUDE.md b/CLAUDE.md index 2054883..ebc7909 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -84,7 +84,7 @@ NotifyListenerService (系统通知入口) | `core/CarrierDetector.kt` | SIM MCC+MNC 映射到运营商(移动/联通/电信/广电),供短信兜底发免费查询码。 | | `core/CarrierBalanceQuery.kt` | 向运营商服务号发查询短信、解析回执余量、余额≤5 自动挂起。 | | `core/SmsFallbackForwarder.kt` | 断网时把紧要通知(验证码/来电)用短信发到 iPhone,5 分钟限频 + 余额检查。 | -| `core/UpdateChecker.kt` | 查 GitHub Releases 最新版(24h 节流)→ 语义比较 → 下载 APK → FileProvider 调起系统安装器。 | +| `core/UpdateChecker.kt` | 查 Gitea Releases 最新版(`git.sunlunfan.com`,国内可达,24h 节流)→ 语义比较 → 下载 APK → FileProvider 调起系统安装器。 | | `store/SettingsStore.kt` | Bark 服务器列表、全局开关、广告关键词、图标前缀等。`MutableStateFlow` + DataStore。图标前缀默认 github raw(`DEFAULT_ICON_PREFIX`);国内不稳时可手填自建 Gitea `https://git.sunlunfan.com/song/a2i/raw/branch/main/icons/`。 | | `store/AppRulesStore.kt` | 黑/白名单模式 + 默认黑名单(系统 App + 输入法 + 三星剪贴板/键盘 + GMS + 录音机/相册/查找/密码管理 + 通话管理/AI通话);默认黑名单带版本号 `bl_version`,升级时把新增噪音包合并进老用户黑名单(只增不删)。 | | `ui/nav/AppNav.kt` | 4 个底部 Tab + 日志页。 | @@ -114,8 +114,8 @@ NotifyListenerService (系统通知入口) - 当前版本:`versionCode = 9`、`versionName = "1.5.1"`(位于 `app/build.gradle.kts`)。**每次改动后同步递增 versionCode/versionName,并同步更新本节。** - 远端仓库:`https://github.com/lsxf/a2i.git`,默认分支 `main`。 - 提交策略:`.gitignore` 已排除 `app/build`、`.gradle`、`.kotlin`、`local.properties`、`.claude/`、`do.ps1`、`gh-token.txt`(发版用 token)、`*.token`、截图与临时文件,**不要**提交它们。 -- 发版流程: +- 发版流程(github + gitea 双发;UpdateChecker 查 Gitea 源,故 Gitea 必发): 1. 递增 `versionCode`/`versionName` → `./gradlew assembleRelease`(产物 `app/build/outputs/apk/release/app-release.apk`) - 2. `git tag -a v{versionName} -m "..."` → `git push origin v{versionName}` - 3. 本机无 `gh` CLI:用 python(urllib) 调 GitHub API 创建 Release + 上传 APK。token 放仓库根 `gh-token.txt`(已 gitignore),脚本里 `open('gh-token.txt')` 读取,**勿**把 token 写进命令参数。注意 Git Bash 的 `/tmp` 与 Windows python 路径不一致,脚本内一律用项目相对路径。 + 2. `git tag -a v{versionName} -m "..."` → `git push origin v{versionName}`(origin 推 github + gitea) + 3. 本机无 `gh` CLI:用 python(urllib) 调 API 创建 Release + 上传 APK。token 分别放 `gh-token.txt`(GitHub)和 `gitea-token.txt`(Gitea,均 gitignore),脚本 `open(...)` 读取,**勿**把 token 写进命令参数。脚本内一律用项目相对路径(Git Bash `/tmp` 与 Windows python 不一致)。 - UI 现状:统一品牌科技感主题(固定品牌色 + 自定义 Typography + 共享组件层),深浅色双方案,关闭动态取色;新组件统一通过 `ui/Components.kt` 复用,避免各页面各拼一套样式。 diff --git a/app/src/main/java/com/a2i/forwarder/core/UpdateChecker.kt b/app/src/main/java/com/a2i/forwarder/core/UpdateChecker.kt index bdc8324..d26a593 100644 --- a/app/src/main/java/com/a2i/forwarder/core/UpdateChecker.kt +++ b/app/src/main/java/com/a2i/forwarder/core/UpdateChecker.kt @@ -59,7 +59,7 @@ class UpdateChecker(private val context: Context) { } val req = Request.Builder() .url(RELEASES_API) - .header("Accept", "application/vnd.github+json") + .header("Accept", "application/json") .header("User-Agent", "a2i-android") .get() .build() @@ -186,7 +186,8 @@ class UpdateChecker(private val context: Context) { } companion object { - const val RELEASES_API = "https://api.github.com/repos/lsxf/a2i/releases/latest" + // 更新源用自建 Gitea(git.sunlunfan.com,国内可达),避免 api.github.com 不稳 + const val RELEASES_API = "https://git.sunlunfan.com/api/v1/repos/song/a2i/releases/latest" const val CHECK_INTERVAL_MS = 24L * 60 * 60 * 1000 } }