V2EX 首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Android

什么时候开始签过名的 apk 无法直接解压了?

  •  
  •   Totato5749 · 12 天前 · 1165 次点击
    如题,刚才试了下自己打包的 apk,发现解压会报错。buildtoolsversion 26.0.2 和 27.0.3 都是,但是打包的是没签名的 apk 还是可以直接解压看到资源的

    可是我记得以前就算别人签过名的 apk 一样可以随意解压看资源的啊? 这改变啥时候开始的?
    6 回复  |  直到 2018-01-12 10:54:43 +08:00
        1
    Totato5749   12 天前
    emmm。。。找到原因了。。

    Conclusion: 因为 APK 使用了 Signature Scheme V2 签名的缘故。

    另外,也不是说使用了 v2 签名的 apk 真的无法解压了,在 macOS 上使用自带 ZIP 工具解压直接报错。但是用第三方压缩工具还是能打开的,只是提示有错误,需要手动选择忽略错误并继续。也能看到图片素材长啥样。这里我用了 BetterZIP 得出的结论。Windows 上我猜第三方的比如 WinRAR 应该也能打开。

    此外,V1 签名( Jar Signature )和未签名应用本身就是 zip 包,可以直接解压。
        2
    Totato5749   12 天前
    背景:Android 7.0 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未授权 APK 文件更改的保护。在默认情况下,Android Studio 2.2 和 Android Plugin for Gradle 2.2 会使用 APK Signature Scheme v2 和传统签名方案来签署您的应用。

    ref: https://developer.android.com/about/versions/nougat/android-7.0.html#apk_signature_v2
        3
    Totato5749   12 天前
    从 Android Studio 2.2 和 Android Plugin for Gradle 2.2 开始默认就使用 V2 签名了。但是也可以在 gradle 中自定义是否使用 v2 签名。

    可以在 app 级别的 build.gradle 中添加来自定义是否使用 v1 及 v2 签名
    ```
    signingConfigs {
    debug {
    v1SigningEnabled true
    v2SigningEnabled true
    }
    release {
    v1SigningEnabled true
    v2SigningEnabled true
    }
    }
    ```

    因为每个签名有两种选择,也就是一共会产生四种结果:
    v1 false & v2 false: 打包出来的 apk 就是未签名的应用,无法直接安装。
    v1 true & v2 false: apk 仅使用 v1 签名,兼容全部版本平台。
    v1 false & v2 true: apk 仅使用 v2 签名,应用仅可在 Android 版本大于等于 7.0 以上安装,在 7.0 以下无法安装。
    v1 true & v2 true: apk 同时使用 v1 v2 签名,兼容全部版本平台。(推荐)
        4
    zhouquanbest   12 天前 via Android
    v2 改名为 zip 依旧随便解压 没有本质区别
        5
    Totato5749   12 天前
    @zhouquanbest 会报错
        6
    Vvfan   12 天前
    DigitalOcean
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   3192 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.0 · 31ms · UTC 03:36 · PVG 11:36 · LAX 19:36 · JFK 22:36
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1