A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1. 默认为debug mode,使用的签名文件在: $HOME/.android/debug.keystore


2. Release Mode 签名:

build.gradle:


[size=1em]
?

[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]
?

[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


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马