构建: 测试临时目录改指 <repo>/build/test-tmp(本机 /tmp tmpfs 已满会误报测试失败)

This commit is contained in:
zijunchiang
2026-10-14 02:12:30 +08:00
parent 87aa979abd
commit a20aa7b1e2
2 changed files with 13 additions and 0 deletions
+4
View File
@@ -198,6 +198,10 @@ $BT/apksigner verify 目标名.apk
- `app/build.gradle`:`versionName "1.6.0"` / `versionCode 43` - `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 曾被本机临时诊断包占用) (`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)` 括号) - App 内显示统一用纯版本号(不加 `(versionCode)` 括号)
- ⚠️ **本机 `/tmp` 是 tmpfs,单测必须绕开它**:`/tmp`(5.6G tmpfs)长期被"已删除但仍被打开"的
文件占满,单测写临时文件会抛 `IOException: 超出磁盘配额`(EDQUOT),**看起来像测试失败**。
`app/build.gradle` 已统一把测试 JVM 的 `java.io.tmpdir` 指到 `<repo>/build/test-tmp`
(`/home` 有 400G 空闲)—— 遇到"莫名其妙的测试失败"先看 `df -h /tmp`,不要去改测试逻辑。
- ⚠️ **发布构建已开启 NewApi 闸门**(`lint { checkReleaseBuilds true; fatal += ['NewApi'] }`): - ⚠️ **发布构建已开启 NewApi 闸门**(`lint { checkReleaseBuilds true; fatal += ['NewApi'] }`):
任何「调用了高于 `minSdk 21` 且未做版本守卫的 API」都会让 `assembleRelease` 直接失败。 任何「调用了高于 `minSdk 21` 且未做版本守卫的 API」都会让 `assembleRelease` 直接失败。
被阻断时按报错位置补版本判断或改用兼容写法,**不要**把 `checkReleaseBuilds` 改回 `false` 被阻断时按报错位置补版本判断或改用兼容写法,**不要**把 `checkReleaseBuilds` 改回 `false`
+9
View File
@@ -3,6 +3,15 @@ plugins {
id "org.jetbrains.kotlin.android" 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 { android {
namespace "com.local.ktv" namespace "com.local.ktv"
compileSdk 35 compileSdk 35