--- 反证: manifest 里加回 package 属性（AGP 8 会直接构建失败）
    rc=1（期望 1）
    ✘ 没有 package 属性（AGP 8 禁止；包名走 namespace）
    ✘ AndroidManifest.xml 里还写着 package 属性 —— AGP 8 会直接构建失败，包名请由 app/build.gradle 的 namespace 提供
    ✔ 拦住了
    还原后 rc=0（期望 0）

--- 反证: 关掉 useLegacyPackaging（Gradle 产物会从 47.8MB 涨到 ~140MB）
    rc=1（期望 1）
    ✘ useLegacyPackaging = true（原生库压 DEFLATE，体积 143.7→47.8 MB 的关键）
    ✘ app/build.gradle 少了 jniLibs.useLegacyPackaging = true —— Gradle 产物会从 47.8 MB 涨到 ~140 MB（.so 变 STORED 不压缩）
    ✔ 拦住了
    还原后 rc=0（期望 0）

--- 反证: jniLibs 只留一个 srcDir（blutter 那 24 个库不会进 APK）
    rc=1（期望 1）
    ✘ jniLibs 两个 srcDir 都配了（src/main/libs）
    ✘ jniLibs.srcDirs 没同时包含 src/main/libs 与 src/main/libs/blutter —— blutter 那 24 个库不会被打进 APK
    ✔ 拦住了
    还原后 rc=0（期望 0）

--- 反证: 两条链版本号漂移（覆盖安装行为错乱）
    rc=1（期望 1）
    ✘ versionCode 一致（2）
    ✘ versionCode 两条链不一致：Gradle=2, build_apk.py=1 —— 两条链的产物会被系统当成同一应用的不同版本，覆盖安装行为会错乱
    ✔ 拦住了
    还原后 rc=0（期望 0）

== 反证结果: 全部拦住且还原干净 ✔ ==
