05. 【Android教程】Android 程序签名打包

简介: 05. 【Android教程】Android 程序签名打包

在上一章,我们创建了自己的 Android 工程,并成功的在模拟器中运行起来。同时提到,工程目录中有一个 bin 目录,运行之后我们可以在此目录下找到我们的 apk。那么不难想到,我们在点“Run”之后,系统会编译我们的代码,并结合配置文件打出一个 apk。


众所周知 apk 是 Android 系统的安装包,在我们编写完代码,打包成 apk 之后,就可以将 apk 发布到应用市场,用户下载 apk 后就可以安装运行了。这一切看似简单但暗藏玄机,我们的 apk 一旦到了纷繁复杂的市场,就需要考虑很多问题。


比如如何将你发布的应用和其他开发者发布的应用区分开;如何确认用户下载的 apk 就是官方发布的而不是个人开发者;如何安全的完成应用升级等等一系列的问题。这些问题有些涉及商业,有些涉及系统安全,对于市场稳定性而言都是至关重要的,解决这些问题的,就是本章主角:Android 程序签名打包。大家可能对这个技术比较陌生,接下来我们从 what、why、how 这三个角度让大家对签名打包有一个清晰的认识。

1. 什么是签名

现在你写了一本书并签上自己的大名,将它出版之后放到各大书店,理想状态就是读者通过书名就能找到它。但是市面上的书不计其数,难免会有书名雷同,亦或是你的书大卖,市面上出现了盗版、翻版,这时候光靠书名已经没办法辨别,你的签名就能发挥作用了。今后如果你要出续集,同样,为了避免读者买到的是续集而不是同名的其他书,也需要在找到书名之后再次确认一下你的签名,两者一致才能认定这就是续集。


这一章提到的签名和现实中的签名非常类似,只不过在这里我们称为“数字签名”。


在 Android 系统中,所有安装到系统的App都必有一个数字证书,此数字证书用于标识应用程序的作者和应用程序之间的信任关系。Android 使用 Java 的数字证书相关的机制来给 apk 加盖数字证书,数字证书的私钥由开发者持有。


Android 使用证书作为标识应用程序作者的一种方式,和 Https 不同,Android 证书不需要由证书认证中心签名,开发者直接使用自制签名证书。所以我们在打包 apk 的时候,必须对 apk 用自己的证书做一次签名打包,用于在市场上唯一标识发布者的身份。一般 Android 有两种签名:


  • 调试模式的签名: Android sdk 为应用自动生成一个签名证书,调试模式下签名的应用不能对外发布,因为由构建工具创建的证书是不安全的,应用商店不接受调试证书签名的 apk;
  • 公布模式下签名: 需要生成自己的证书,可用于发布。

2. 为什么要做签名打包

关于签名打包的原因,上面已经提到过一些,主要是用于标识开发者的身份。这里再针对具体的应用场景阐述几个引入签名的优势:


  • 应用程序升级: 在应用程序发布更新时,如果用户已有此 App,并且签名和待升级的 apk 签名一致,那么用户可以无缝的升级到新版本。如果签名不一致,那么不会发生升级,此时相当于用户安装了两个完全独立的 App。
  • 应用程序模块化: Android 允许相同证书签名的应用程序运行在相同的进程中,此时系统会将它们作为单个应用程序处理。此时每个应用程序可以以模块化部署,在升级时可以独立地升级其中的某一个模块。
  • 代码、数据的授权共享: Android 提供了以签名为基础的权限机制,因此一个应用可以暴露功能给另一个用相同证书签名的应用使用,这样就可以在相同签名的应用程序之间共享代码和数据。

3. 如何签名打包

签名打包的方式有很多,这里介绍一种最简单的方式,直接使用Eclipse就可以为我们的 App 签名打包。


在 Eclipse 中选择“File” -> “Export”,选择“Android” -> “Export Android Application”;

这时候提示我们创建一个密钥库 keystore,选择 Create new keystore,然后指定一个保存证书的目录并设置证书密码;


  1. 接着填写密钥库信息,填写证书文件的密码,使用期限和组织单位的信息,这样一个证书就生成好了。.


  1. 回到第一步,在 Export 的时候选择“Use existing keystore”,然后选择刚刚创建的证书,并输入密码,一路 next,搞定!

再看看 Eclipse 的 bin 目录,就会出现刚刚我们用自己的证书签名的 apk,待我们后面学习 Android 功能开发之后,你就可以用这种方式签名打包自己的 apk 进行发布了。

4. 小结

经过前面两章的学习,现在你已经可以完成一个 Android 项目的创建、运行、签名打包,剩下的也就是最重要—— Android 项目开发。接下来我们就正式进入 Android 基础知识,一步步进入 Android 的世界。

相关文章
|
4月前
|
Android开发
基于android-11.0.0_r39,系统应用的手动签名方法和过程
本文介绍了基于Android 11.0.0_r39版本进行系统应用手动签名的方法和解决签名过程中遇到的错误,包括处理`no conscrypt_openjdk_jni-linux-x86_64`和`RegisterNatives failed`的问题。
216 2
|
29天前
|
Android开发 数据安全/隐私保护 虚拟化
安卓手机远程连接登录Windows服务器教程
安卓手机远程连接登录Windows服务器教程
56 4
|
1月前
|
Android开发
布谷语音软件开发:android端语音软件搭建开发教程
语音软件搭建android端语音软件开发教程!
|
4月前
|
安全 Java Android开发
【Android P】OTA升级包定制,移除不需要更新的分区,重新打包签名
如何解压OTA升级包、编辑升级包内容(例如移除不需要更新的分区)、重新打包、签名以及验证OTA文件的过程。
358 2
【Android P】OTA升级包定制,移除不需要更新的分区,重新打包签名
|
4月前
|
Java Android开发 Windows
使用keytool查看Android APK签名
本文介绍了如何使用Windows命令行工具和keytool查看APK的签名信息,并提供了使用AOSP环境中的signapk.jar工具对APK进行系统签名的方法。
416 0
使用keytool查看Android APK签名
|
4月前
|
Android开发 数据安全/隐私保护
Android Studio创建JKS签名遇到的坑
Android Studio创建JKS签名遇到的坑
166 1
|
5月前
|
Android开发 Java 数据安全/隐私保护
「移动端」Android平台签名证书(.keystore)生成指南
发布Android APK需签名证书,步骤如下: 1. 安装JRE,如[JRE8](https://www.oracle.com/technetwork/java/javase/downloads/index.html),并添加到环境变量。 2. 使用`keytool -genkey`命令生成证书,例如: ``` keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore ``` 输入相关个人信息及密码。
827 0
「移动端」Android平台签名证书(.keystore)生成指南
|
5月前
|
Oracle Java 关系型数据库
Android studio 安装以及第一个程序
Android studio 安装以及第一个程序
135 0
|
5月前
|
Android开发
【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
150 0
|
6月前
|
Java Android开发
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
153 0