From a20aa7b1e28d74b34afecf0ffdd630183a61d4a2 Mon Sep 17 00:00:00 2001 From: zijunchiang Date: Wed, 14 Oct 2026 02:12:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9E=84=E5=BB=BA:=20=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=B8=B4=E6=97=B6=E7=9B=AE=E5=BD=95=E6=94=B9=E6=8C=87=20?= =?UTF-8?q?/build/test-tmp=EF=BC=88=E6=9C=AC=E6=9C=BA=20/tmp=20tmpfs=20?= =?UTF-8?q?=E5=B7=B2=E6=BB=A1=E4=BC=9A=E8=AF=AF=E6=8A=A5=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 4 ++++ app/build.gradle | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index b548352..db3f331 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -198,6 +198,10 @@ $BT/apksigner verify 目标名.apk - `app/build.gradle`:`versionName "1.6.0"` / `versionCode 43` (`1.5.5`/`37` 已发布;`1.5.6` = 更新源加 Gitee、`1.5.7` = 删除「歌曲源临时受限」弹窗、`1.5.8` = 精简远程日志、`1.5.9` = 按 HAR 对齐原版协议、`1.5.10` = 源列表只留 zk.ktv1.top:6677、`1.5.11`(命名越界,已改) / `1.6.0` = whoami 心跳/设备身份/点歌推送/带 query 的地址闸门 + 并入 selfhost-source 支线,均尚未发布。18~21 曾被本机临时诊断包占用) - App 内显示统一用纯版本号(不加 `(versionCode)` 括号) +- ⚠️ **本机 `/tmp` 是 tmpfs,单测必须绕开它**:`/tmp`(5.6G tmpfs)长期被"已删除但仍被打开"的 + 文件占满,单测写临时文件会抛 `IOException: 超出磁盘配额`(EDQUOT),**看起来像测试失败**。 + `app/build.gradle` 已统一把测试 JVM 的 `java.io.tmpdir` 指到 `/build/test-tmp` + (`/home` 有 400G 空闲)—— 遇到"莫名其妙的测试失败"先看 `df -h /tmp`,不要去改测试逻辑。 - ⚠️ **发布构建已开启 NewApi 闸门**(`lint { checkReleaseBuilds true; fatal += ['NewApi'] }`): 任何「调用了高于 `minSdk 21` 且未做版本守卫的 API」都会让 `assembleRelease` 直接失败。 被阻断时按报错位置补版本判断或改用兼容写法,**不要**把 `checkReleaseBuilds` 改回 `false` diff --git a/app/build.gradle b/app/build.gradle index 60e45ef..2279fc4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,6 +3,15 @@ plugins { id "org.jetbrains.kotlin.android" } +// ⚠️ 本机 /tmp 是 5.6G 的 tmpfs,且常被"已删除但仍被打开"的文件占满 —— +// 单测写临时文件时会直接抛 IOException: 超出磁盘配额(EDQUOT),看起来像测试失败。 +// 统一把测试 JVM 的临时目录指到项目所在磁盘(/home 有 400G 空闲),与 /tmp 状态解耦。 +tasks.withType(Test).configureEach { + def testTmp = new File(rootDir, 'build/test-tmp') + doFirst { testTmp.mkdirs() } + systemProperty 'java.io.tmpdir', testTmp.absolutePath +} + android { namespace "com.local.ktv" compileSdk 35