Android 签名知识点必知必会

本文深入解析Android应用签名机制,涵盖签名的重要性和不同签名方案(v1、v2、v3),以及如何在Android Studio中配置签名策略,确保应用在不同Android版本上的兼容性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

在 Android 平台上运行的每个应用都必须有开发者的签名, 通过应用签名,开发者可以标识应用创作者并更新其应用;同时应用签名是将应用放入其应用沙盒的第一步。已签名的应用证书定义了哪个用户 ID 与哪个应用相关联;不同的应用要以不同的用户 ID 运行。

当应用(APK 文件)安装到 Android 设备上时,软件包管理器会验证 APK 是否已经过适当签名(已使用 APK 中包含的证书签名)。如果该证书(证书中的公钥)与设备上的任何其他 APK 使用的签名密钥一致,那么这个新 APK 就可以选择在清单中指定它将与其他以类似方式签名的 APK 共用一个 UID。

对于创建密钥这里不做过多介绍(对与Google Play 开发者可以移步至 官网查看):

Build -> Gernerate Signed Boundle or Apk -> Apk ->Create New->填入相关信息 即可

详细的签名策略请查看 Android开发文

Android 支持以下三种应用签名方案:

  • v1 方案:基于 JAR 签名
  • v2 方案:APK 签名方案 v2(在 Android 7.0 中引入)。
  • v3 方案:APK 签名方案 v3(在 Android 9 中引入,在 Android P 中,v2 方案已更新为 v3 方案,以便在签名分块中包含其他信息,但在其他方面保持相同的工作方式)。

为了最大限度地提高兼容性,进行apk打包签名时需要按照 v1、v2、v3 的先后顺序采用所有方案对应用进行签名。与只通过 v1 方案签名的应用相比,还通过 v2+ 方案签名的应用能够更快速地安装到 Android 7.0 及更高版本的设备上更低版本的 Android 平台会忽略 v2+ 签名,这就需要应用包含 v1 签名

对于V1及V2的检测兼容,Google给出了基本校验逻辑:

  1.  JAR 签名(v1 方案)

该方案基于签名的 JAR;

v1 签名不保护 APK 的某些部分,例如 ZIP 元数据。APK 验证程序需要处理大量不可信(尚未经过验证)的数据结构,然后会舍弃不受签名保护的数据。这会导致相当大的受攻击面。此外,APK 验证程序必须解压所有已压缩的条目,而这需要花费更多时间和内存。为了解决这些问题,Android 7.0 中引入了 APK 签名方案 v2。

    2.APK全文件签名(V2/V3) 

APK 签名方案 v2 是一种全文件签名方案,该方案能够发现对 APK 的受保护部分进行的所有更改,从而有助于加快验证速度并增强完整性保证

用 APK 签名方案 v2 进行签名时,会在 APK 文件中插入一个 APK 签名分块,该分块位于“ZIP 中央目录”部分之前并紧邻该部分。在“APK 签名分块”内,v2 签名和签名者身份信息会存储在 APK 签名方案 v2 分块中。

APK 签名方案 v2 是在 Android 7.0 (Nougat) 中引入的。为了使 APK 可在 Android 6.0 (Marshmallow) 及更低版本的设备上安装,应先使用 JAR 签名功能对 APK 进行签名,然后再使用 v2 方案对其进行签名

注意: 在实际打包过程中我们只需要指定`v1`和`v2`同时验证即可,如使用Android Studio进行打包勾选两个复选框:

也可以在module 的 `build.gradle`中配置`v1SigningEnabled true`和`v2SigningEnabled true`

    signingConfigs {
        release {
            ...
            v1SigningEnabled false
            v2SigningEnabled true
         }
    }

    两种方式都会实现`v2`签名生效

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值