Android Studio 生成签名的APK

简介: 生成签名打开项目以后,点击项目,选择 Build 菜单, 然后选择 Generate Signed APK. 如下图所示:打开生成对话框:选择 Create new... 按钮, 生成新的Key, 弹出新生成对话框:首先选择 Key 存储的路径.可能是有BUG, 在弹出的选择 keystore file 对话框中,需要先输入 File name, 如 ``, 文件后缀名 保持默认的 jks 不变。

生成签名

打开项目以后,点击项目,选择 Build 菜单, 然后选择 Generate Signed APK. 如下图所示:

打开生成对话框:

选择 Create new... 按钮, 生成新的Key, 弹出新生成对话框:

首先选择 Key 存储的路径.

可能是有BUG, 在弹出的选择 keystore file 对话框中,需要先输入 File name, 如 ``, 文件后缀名 保持默认的 jks 不变。然后再改变保存的路径(否则输入不了名字).

最后的路径可能是这样的: E:\CODE_ALL\02_GIT_ALL\cncounter-android\key_store\cncounter-android-key.jks

接着输入密码, 建议不要太简单,也不要太复杂。 此处示例的密码为:

cncounter-android

为了简单起见, 所有密码都设置为同一个:

cncounter-android

有效时间默认25年,以支撑你的整个APP周期。

Country Code (XX) 应该是 CN, 如下图所示:

然后点击OK, 回到生成界面。

勾选上记住密码,然后点击下一步.

如果弹出输入密码保护,可以选择留空,不使用这种保护。

点击OK,进入下一步:

选择 release 是发布版本,选择 debug 是调试版本。 此处, 选择 release , 然后点击完成按钮即可。

然后会告诉你生成完毕,可以选择查看:

生成的APK如下所示:

下次需要生成,只需要从 Build 菜单, 选择 Generate Signed APK 即可。 如下图所示:

因为上次选择了记住密码,所以这里不需要记住密码。

然后继续即可。

自动签名

在 Android Studio 中, 可以通过配置在构建过程中自动签名 release 版本的APK:

1. 选择 project 浏览视图, 在 app 上点击鼠标右键, 选择 Open Module Settings 菜单, 如下图所示:

2. 在打开的 Project Structure 窗口中, 选择 Modules 下面的 app 模块.

3. 切换到 Signing 标签页.

4. 选择 keystore 文件, 输入此配置的 name(当然, 也可以通过加号创建多个配置), 以及其他必须的信息,比如各种密码.

5. 然后切换到 Build Types 选项卡.

6. 选择 release build.

7. 然后在右边的 Signing Config, 选择上面创建的配置项.

8. 点击 OK 即可.

然后就可以了。 你的 debug 版本也可以采用同样的方式配置,但是建议使用 debug专用的 keystore 进行签名。

多个项目成员进行开发都采用同一个 debug 的store, 而 release 版本的 keystore 则只允许部分人员使用。

优化对齐

在 Android SDK 中包含一个名为 “zipalign” 的工具,它能够对打包后的 app 进行优化。 其位于 SDK 的 build-tools 目录下, 例如: D:\Develop\Android\sdk\build-tools\23.0.2\zipalign.exe 。

如果你将路径 D:\Develop\Android\sdk\build-tools\23.0.2 添加到 Path 之中,则可以直接使用 zipalign.exe ; 否则需要指定全路径。

用法示例

将 infile.apk 对齐,并保存为 outfile.apk:

zipalign [-f] [-v] <alignment> infile.apk outfile.apk

验证 existing.apk 是否对齐:

zipalign -c -v <alignment> existing.apk

占位符 <alignment> 是指字节对齐边界的一个整数。apk 文件的对齐字节数必须是 4 (也就是 4*8 = 32-bit 的对齐)。其他数字无效。

标志:

-f : 强制覆盖已存在的输出文件
-v : 输出详细日志(verbose output)
-c : 校验时使用, 验证指定的文件是否对齐

下面是使用示例:

首先,进入到 apk 文件所在的目录(否则全路径命令行就会很长):

e:
cd E:\CODE_ALL\02_GIT_ALL\cncounter-android\app\build\outputs\apk

然后找到你的 zipalign 程序路径

D:\Develop\Android\sdk\build-tools\23.0.2\zipalign.exe -c -v 4 app-release-unaligned.apk

可以看到类似下面这样的输出,失败信息:

  209814 res/mipmap-hdpi-v4/ic_launcher.png (BAD - 2)
  212824 res/mipmap-mdpi-v4/ic_launcher.png (OK)
  246707 res/xml/pref_data_sync.xml (OK - compressed)
  248751 resources.arsc (BAD - 3)
  459180 classes.dex (OK - compressed)
 1218706 META-INF/MANIFEST.MF (OK - compressed)
 1229010 META-INF/CERT.SF (OK - compressed)
 1239389 META-INF/CERT.RSA (OK - compressed)
Verification FAILED

可以看到校验失败,因为我们校验的是一个未对齐(unaligned)的 apk。

下面,我们来进行对齐(注意,不支持换行):

D:\Develop\Android\sdk\build-tools\23.0.2\zipalign.exe  -f -v 4 app-release-unaligned.apk cnc-v0.1.20151216.apk

输出内容大致如下所示:

  225300 res/mipmap-xxxhdpi-v4/ic_launcher.png (OK)
  247015 res/xml/pref_data_sync.xml (OK - compressed)
  249060 resources.arsc (OK)
  459489 classes.dex (OK - compressed)
 1219015 META-INF/MANIFEST.MF (OK - compressed)
 1229319 META-INF/CERT.SF (OK - compressed)
 1239698 META-INF/CERT.RSA (OK - compressed)
Verification succesful

提示对齐成功,我们可以验证一下:

D:\Develop\Android\sdk\build-tools\23.0.2\zipalign.exe -c -v 4 cnc-v0.1.20151216.apk

提示的内容大致如下:

  248574 res/xml/pref_notification.xml (OK - compressed)
  249060 resources.arsc (OK)
  459489 classes.dex (OK - compressed)
 1219015 META-INF/MANIFEST.MF (OK - compressed)
 1229319 META-INF/CERT.SF (OK - compressed)
 1239698 META-INF/CERT.RSA (OK - compressed)
Verification succesful

OK. 此时算是可以交付给用户下载的版本了。

对齐之后的 apk 文件最好不要修改。

如果需要了解更多,请参考官方链接。

官方链接:http://developer.android.com/intl/zh-cn/tools/publishing/app-signing.html

简单优化:Zipalign http://www.cnblogs.com/xirihanlin/archive/2010/04/12/1710164.html

日期: 2015年11月28日

作者: 铁锚 http://blog.csdn.net/renfufei



目录
相关文章
|
7月前
|
移动开发 安全 Java
Android历史版本与APK文件结构
通过以上内容,您可以全面了解Android的历史版本及其主要特性,同时掌握APK文件的结构和各部分的作用。这些知识对于理解Android应用的开发和发布过程非常重要,也有助于在实际开发中进行高效的应用管理和优化。希望这些内容对您的学习和工作有所帮助。
700 83
|
6月前
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
370 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
|
7月前
|
前端开发 Java 编译器
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
201 36
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
|
8月前
|
前端开发 Java 开发工具
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
490 18
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
|
8月前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
368 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
8月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
195 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
8月前
|
测试技术 Android开发 开发者
【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
135 16
|
Java Android开发 Windows
使用keytool查看Android APK签名
本文介绍了如何使用Windows命令行工具和keytool查看APK的签名信息,并提供了使用AOSP环境中的signapk.jar工具对APK进行系统签名的方法。
1348 0
使用keytool查看Android APK签名
|
4月前
|
Android开发 Windows
Android studio 报错Connect to 127.0.0.1:8888 [/127.0.0.1] failed: Connection refused: connect(已解决)
这是一篇关于解决Android Studio报错“Connect to 127.0.0.1:8888 failed: Connection refused”的文章。问题通常因系统代理设置被Android Studio自动保存导致。解决方法是找到系统中Android Studio使用的gradle.properties文件(位于Windows的C:\Users\你的电脑用户名\.gradle或Mac的/Users/.{你的用户目录}/.gradle),删除或注释掉多余的代理配置后保存并重新Sync项目。希望此经验能帮助快速解决同类问题!
633 36
|
Android开发
【错误记录】Android Studio 编译报错 ( Installed Build Tools revision 31.0.0 is corrupted )
【错误记录】Android Studio 编译报错 ( Installed Build Tools revision 31.0.0 is corrupted )
1247 0
【错误记录】Android Studio 编译报错 ( Installed Build Tools revision 31.0.0 is corrupted )