搜索
分发文档
应用分发
游戏分发
电视应用分发
快应用分发
快游戏分发
服务分发
内容分发
分发文档/应用分发/应用发布/操作指南/应用签名介绍
应用签名介绍更新时间: 2024-09-27 16:26:00

本文档介绍了应用签名的相关内容,您可在了解文档内容后进行操作。

一、什么是签名?

签名一词来源于生活中常用的术语,还记得刷信用卡会要求客户签名吗?这个签名的作用是确认这笔消费是本人经手的。计算机中所说的签名和生活中所说的签名在本质上是一样的,它所起到的作用也是一致的!为App签名的本质是说明这个App是我开发的,不是别人。用官方的话说,就是在应用和开发者之间建立可信任的关联。

二、为什么要给Android应用程序签名?

这样做的根本原因是Android系统需要一个机制,保证以下几点:

1、拿到一个应用的安装包,能够知道作者是谁。

2、当应用更新时,能够检测是不是作者本人提交的。

3、应用中的部分文件遭到修改时,能够检测到是否为作者本人做出的修改 为了实现上述目的,Android就引入了签名这种比较成熟的方法。

三、签名与应用商店有什么关系?

通过签名的检测和对比,应用商店能够从中识别到开发者的信息,在下面的几个场景中我们会依赖签名:

  1. 应用的认领。
  2. 每次应用提交更新,确保是作者本人提交。
  3. 当有人试图冒充作者提交应用时,应用商店能够阻止该行为。
  4. 通过签名黑名单,阻止恶意软件作者提交应用。
  5. 关于签名,我需要注意什么?

下面是你需要注意的要点:

  1. 所有应用程序必须签名,未经过签名的程序不允许在模拟器或者设备上运行。
  2. 测试和开发阶段,开发工具会自动生成一个debug key来为应用签名。
  3. 当应用准备发布时,你需要创建自己的release key来为应用签名,所需要的工具都包含在SDK tools中。
  4. Android只在应用安装阶段检测签名是否过期,如果签名在应用安装后过期,应用仍可以继续正常使用。
  5. 你可以使用标准工具——keytool 和 jarsigner/apksigner来生成秘钥和为apk签名。
  6. 签名前,我们建议你使用zipalign工具来优化apk包。

四、如何签名?

1、准备工作

keytool:生成数字证书,即密钥,也就是上面说到的扩展名为.keystore的那类文件。

jarsigner:jdk 自带的签名工具,可以对 jar 进行签名。使用 keystore 文件进行签名。生成的签名文件默认使用 keystore 的别名命名。

apksigner:Android sdk 提供的专门用于 Android 应用的签名工具,与jarsigner工具不同的是,jarsigner只支持v1签名;而apksigner支持v1、v2和v3签名,更多关于Android签名的原理,请参看Android关于签名的官方文档

zipalign:对签名后的apk进行优化,提高与Android系统交互的效率。

2、用keytool生成证书

命令:keytool -genkey -v -keystore liufeng.keystore -alias liufeng.keystore -keyalg RSA -validity 20000。

解释:-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来,显示在dos窗口中;-keystore liufeng.keystore 表示生成的数字证书的文件名为“liufeng.keystore”;-alias liufeng.keystore 表示证书的别名为“liufeng.keystore”,当然可以不和上面的文件名一样;-keyalg RSA 表示生成密钥文件所采用的算法为RSA;-validity 20000 表示该数字证书的有效期为20000天,意味着20000天之后该证书将失效。

3、使用apksigner工具为Android应用v1、v2或v3签名(apksigner和jarsigner只要使用其中一种签名工具就可以了,推荐使用apksigner为应用签名)

命令:apksigner sign --v1-signing-enabled true --v2-signing-enabled true --v3-signing-enabled true --ks liufeng.keystore unsigned.apk。

解释:apksigner是工具名称,--v1-signing-enabled true表示添加v1签名,本次命令同时添加v1、v2和v3签名,均使用liufeng.keystore证书。

4、使用zipalign字节优化工具优化apk(非必须但建议这么做)

命令:zipalign -v 4 signed.apk signed_aligned.apk 说明。

解释:zipalign是工具名称,-v表示在DOS窗口打印出详细的优化信息; signed.apk signed_aligned.apk 表示对已签名文件signed.apk进行优化,优化后的文件名为signed_aligned.apk。

需要注意的是,如果使用jarsigner工具,可以在签名后使用zipalign工具优化;如果使用apksigner工具进行签名,签名完成不得使用zipalign工具优化,这是其签名原理决定的,需要字节优化的话可以提前到签名前进行。

五、注意事项

1、签名方案与安卓版本

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

Android 7 (sdk version 24)以下必须有v1签名,如果没有,apksigner验证签名失败;

Android11(sdk version 30)及以上必须有v2签名,如果只有v1签名,apksigner验证签名通过,但是设备装不上apk。

2、关于v3签名方案

Android 9 支持APK密钥轮替,这使应用能够在APK更新过程中更改其签名密钥。为了实现轮替,APK必须指示新旧签名密钥之间的信任级别。需要注意的是,如果使用轮替签名,那么对于同一个apk,如果想在设备上正常更新的话,必须满足新版本apk的轮替签名证书和历史签名证书完全涵盖了历史版本apk的所有签名证书。简而言之,针对原始签名的apk,如果使用不同的证书生成不同的轮替签名的apk,那么他们之间将不能覆盖更新。

以上为应用签名的相关内容,如您仍有问题,可联系客服,与我们取得联系。

上一篇:安装器-无法识别备案应用的申诉指南
下一篇:应用认领操作指南
文档内容是否有帮助?
有帮助
无帮助