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

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

  •  
  •   Totato5749 · 2018-01-11 19:21:50 +08:00 · 10432 次点击
    这是一个创建于 2507 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,刚才试了下自己打包的 apk,发现解压会报错。buildtoolsversion 26.0.2 和 27.0.3 都是,但是打包的是没签名的 apk 还是可以直接解压看到资源的

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

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

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

    此外,V1 签名( Jar Signature )和未签名应用本身就是 zip 包,可以直接解压。
    Totato5749
        2
    Totato5749  
    OP
       2018-01-11 19:50:14 +08:00
    背景: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
    Totato5749
        3
    Totato5749  
    OP
       2018-01-11 19:57:54 +08:00
    从 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 签名,兼容全部版本平台。(推荐)
    zhouquanbest
        4
    zhouquanbest  
       2018-01-12 08:03:08 +08:00 via Android
    v2 改名为 zip 依旧随便解压 没有本质区别
    Totato5749
        5
    Totato5749  
    OP
       2018-01-12 08:57:15 +08:00
    @zhouquanbest 会报错
    Vvfan
        6
    Vvfan  
       2018-01-12 10:54:43 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   991 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 19:55 · PVG 03:55 · LAX 11:55 · JFK 14:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.