outDir  = E:\KuGou\2026-09-15-18-17-47\android_mcp\tools\sign_tmp
realApk = E:\KuGou\2026-09-15-18-17-47\android_mcp\dist\RevMCP-debug.apk  (45 MB)
keystore= E:\KuGou\2026-09-15-18-17-47\android_mcp\app\src\main\assets\revmcp.keystore  (2552 B)

== 1. keystore 载入与别名解析 ==
  [PASS] keystore 存在
  [PASS] PKCS12/JKS 可载入
  [PASS] 含别名 revmcp
  [PASS] 大小写不敏感解析（RevMCP）
  [PASS] 别名写错时报错并列出全部别名

== 2. 参数护栏 ==
  合成包条目: 11（so 6 个）
  [PASS] v1/v2/v3 全关时拒绝签名
  [PASS] keystore 缺失时给出可操作提示

== 3. v2-only：逐字节搬运，但会删掉原 v1 条目 ==
  [PASS] v2-only 签名成功
  [PASS] v2-only 不再有 META-INF 条目（apksig 会清掉旧签名）
  [PASS] v2-only 条目数比原包少（被清掉 1 个假 v1）
  [PASS] v2-only 校验通过 v2
  [PASS] v2-only 校验通过 v3
  [PASS] v2-only 判词=签名有效
  [PASS] v2-only 保持 6/6 .so STORED + 6/6 4096 对齐

== 4. v1+v2+v3（默认）：新增 v1 三件套且不掉对齐 ==
  [PASS] v1+v2+v3 签名成功
  [PASS] 新增 META-INF/MANIFEST.MF
  [PASS] 新增 META-INF/*.SF
  [PASS] 条目数 = 原包 + 2（清 1 加 3）
  [PASS] v1+v2+v3 校验通过 v2/v3
  [PASS] v1+v2+v3 判词=签名有效
  [PASS] **签名后 .so 仍 6/6 STORED + 6/6 4096 对齐**
  [PASS] 证书 SHA-256 在 verify 输出里一致
  [PASS] 报告写明三方案启用情况

== 5. 幂等 / 原地重签 ==
  [PASS] 重复签同一输出路径可覆盖
  [PASS] in==out 原地重签不损坏原文件
  [PASS] 原地重签后仍校验通过
  [PASS] 原地重签后 .so 压缩方式与对齐保持

== 6. 真实产物复测（签名不改变 .so 打包方式） ==
  签名前: .so 打包   : 0/48 STORED（其中 0 个 4096 字节对齐） ｜ 48/48 DEFLATE
  manifest   : extractNativeLibs=true
  结论       : ✅ 合规（extractNativeLibs=true，安装期解压到 nativeLibraryDir，DEFLATE 完全可用；STORED 条目也一并保留了对齐）
  签名用时 798ms, 产物 45 MB
  [PASS] 真包签名后 apksig 判签名有效
  [PASS] 真包签名后 v2/v3 均为 true
  签名后: .so 打包   : 0/48 STORED（其中 0 个 4096 字节对齐） ｜ 48/48 DEFLATE
  manifest   : extractNativeLibs=true
  结论       : ✅ 合规（extractNativeLibs=true，安装期解压到 nativeLibraryDir，DEFLATE 完全可用；STORED 条目也一并保留了对齐）
  [PASS] **真包签名前后 .so 打包方式逐项不变（STORED / 对齐 / DEFLATE 计数都一致）**
  [PASS] 真包 .so 总数 = 48
  [PASS] 真包 .so 要么全 STORED+对齐、要么全 DEFLATE（不混着来）
  [PASS] 签名后签名者证书与本工具报告一致
  [PASS] 签名后文件大小与签名前基本一致（无重压缩）

PASS: 34   FAIL: 0
结论: 全部通过
