1. 默认为debug mode,使用的签名文件在: $HOME/.android/debug.keystore
2. Release Mode 签名:
build.gradle:
[size=1em]1 [size=1em]2 [size=1em]3 [size=1em]4 [size=1em]5 [size=1em]6 [size=1em]7 [size=1em]8 [size=1em]9 [size=1em]10 [size=1em]11 [size=1em]12 [size=1em]13 [size=1em]14 [size=1em]15 [size=1em]16 [size=1em]17 | [size=1em][size=1em]android { [size=1em] signingConfigs { [size=1em] releaseConfig { [size=1em] keyAlias 'stone' [size=1em] keyPassword 'mypwd' [size=1em] storeFile file('/Users/stone/Documents/project_AS/myapplication/stone.keystore') [size=1em] storePassword 'mypwd' [size=1em] } [size=1em] } [size=1em] buildTypes { [size=1em] release { [size=1em] ... [size=1em] signingConfig signingConfigs.release [size=1em] } [size=1em] } [size=1em]} |
signingConfigs 即签名配置。 配置名releaseConfig{ //配置内容 }
在buildTypes中指定release时的signingConfigs对应的配置名
执行gradle 命令, $ gradle assembleRelease
编译并发布。 在build/outputs/apk/ 下能看到未签名的apk 和 已经签名的apk
如果未用签名文件,使用debug mode的debug签名。那就会生成一个debug签名的apk
3. 签名密码写在gradle中不安全:
[size=1em]1 [size=1em]2 [size=1em]3 [size=1em]4 [size=1em]5 [size=1em]6 [size=1em]7 [size=1em]8 [size=1em]9 [size=1em]10 | [size=1em][size=1em]signingConfigs { //gradle assembleRelease [size=1em] myConfig { [size=1em] storeFile file(stone.keystore) [size=1em] storePassword System.console().readLine( [size=1em]Keystore password: ) [size=1em] keyAlias stone [size=1em] keyPassword System.console().readLine( [size=1em]Key password: ) [size=1em] } [size=1em]} |
4. 使用Android Studio 签名打包
菜单 Build > Generate Signed APK
5. 使用Android Studio 自动签名打包
a. 打开project structure (cmd+;)
b. 选中需要构建的moudle,打开Signing,添加config
file:///D:/Program/WizNote/temp/008b59d3-0b15-424b-8e42-1370f97d96b2_4_files/ba1c6b25-1459-41e9-ab0c-c9d4edb5811a.png
执行完成后,会在build.gradle中自动加上 signingConfigs{ config {...} }的信息
c. 打开build types > release
file:///D:/Program/WizNote/temp/008b59d3-0b15-424b-8e42-1370f97d96b2_4_files/813c4f7d-4af1-495e-a2ae-1721eacd67a2.png
在signing Config中选择定义的配置
zip align enabled 默认为true, 用于启用优化Apk的操作
d. $ gradle build
会在build/outputs/apk/ 目录下输出 在build types中定义的 编译类型
如:
myapplication-debug-unaligned.apk
myapplication-debug.apk
myapplication-release-unaligned.apk
myapplication-release-unsigned.apk
myapplication-release.apk
6. 使用Android SDK 和 JDK 的命令 签名打包APK
创建签名
keytool -genkey -v -keystore stone.keystore -alias stone -keyalg RSA -keysize 2048-validity 10000 生成签名文件
为apk签名
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore stone.keystore unsigned.apk stone 不生成新文件
检测apk是否签名
jarsigner -verbose -certs -verify signed.apk
优化apk
zipalign -f -v 4 signed_unaligned.apk signed_aligned.apk
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |