Android Studio 打包
开发完一款Application之后,需要对其进行打包,才可以发布工用户使用(release)。而Android Studio就具备了打包的工具。有一下两种打包方式:
- Gradle配置打包
- Build->Generate Signed APK打包
签名文件
在进行打包之前,首先需要一个签名文件。
eclipse的签名文件是以.ketstore为后缀的文件;Android Studio是以.jks为后缀的文件。
签名文件有几个要素
英文名称 | 解释 |
---|---|
keyStore | 密钥库路径 |
keyStore Password | 密钥库密码 |
keyAlias | 签名文件别名 |
keyPassword | 签名文件密码 |
默认签名文件
在开发阶段,用到第三方SDK新建应用项目时,需要签名KEY的SHA1。这里可以使用Android Studio自带的debug.keystore。
可以使用命令keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
在终端中直接获取到签名key的SHA1信息,如下图:
~
代表的是账户的根目录
对应要素:
要素名称 | 值 |
---|---|
keystore | ~/.android/debug.keystore |
keyStore password | android |
keyAlias | androiddebugkey |
keyPassword | android |
默认路径下的debug.keystore不存在时,会自动创建。如果修改了debug.keystore路径,并不会在新路径下自动创建debug.keystore文件。如果在默认路径创建一个不以debug命名的key,系统还是会自动创建该签名文件。所以只有使用默认路径,才会自动创建相应的key文件
参考
Android Studio获取调试包签名的SHA1值方法,signing configurations(签名配置)
创建签名文件生成Apk文件
通过Build->Generate Signed APK,选择module然后next,点击creat new...选项创建一个新的key文件。如下图填写一些基本信息
名称 | 描述 |
---|---|
key store path | 密钥库路径 |
password | 密钥库密码 |
confirm | 确认密码 |
alias | 别名 |
validity | 有效年限 |
first and last name | 名字 |
organization unit | 公司或组织 |
organization | 公司 |
city or locality | 省 |
state or province | 市或洲 |
country code | 国家代码 |
然后点击next->选择Build Type->Finish。此时Apk文件就生成了,同时签名文件也生成在相应目录。
这里注意到,已经利用了Build->Generate Signed APK打包了Apk
。
打包
打包有两种方式,在介绍自定义签名文件时,已经实现了一种打包方式:Build->Generate Signed APK
。那么来看看如何利用Gradle配置打包
Gradle 配置
配置签名文件
在build.gradle(module:app)中加入下面的代码
signingConfigs {
release {
storeFile file("foolishdev.jks")
storePassword "9445118798"
keyAlias "foolishdev"
keyPassword "9445118798"
}
}
这里要输入的信息都是之前创建签名文件时对应的四个要素的值。
配置Build Type
buile type{
release {
// 不显示Log
buildConfigField "boolean", "LOG_DEBUG", "false"
//混淆
minifyEnabled true
//Zipalign优化
zipAlignEnabled true
// 移除无用的resource文件
shrinkResources true
//加载默认混淆配置文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//签名
signingConfig signingConfigs.release
}
}
通过
signingConfig signingConfigs.release
来配置Build Type的签名信息。可以看到这里使用了Gradle配置签名文件时配置的Key。
其实android studio中module默认都会有debug和release两个buildType。debug用于开发时测试的版本,而release则是用来发布的版本。当然在这里也可以配置自定义的版本,并配置特有的签名文件。在Build Variants操作框中会生成该Build Type。
配置Build Variants
从上图操作框中可以看到,module的Build Variants中有两个Type,分别是debug和release。其中release是刚刚配置的Build Type。可以选择任意一个类型进行打包,并且他们会利用各自配置的Key进行打包。
注意到上面Build Type时并没有配置debug type,是Android Studio默认自带的。其中debug type使用的就是默认的签名文件(debug.keystore)。当然也可以在Build Type中配置debug Type并且配置自定义的debug key
生成Apk文件
当准备工作全部完成,执行 Run app或者Build->Build apk就会自动在module name/app/build/outputs/apk路径下生成Apk文件。
注意使用Build->Generate Signed APK生成Apk时,Apk文件生成目录和创建的Key文件目录相同
参考
Android tips(八)-->Android Studio打包apk,aar,jar包
进阶
不在Gradle中配置password
signingConfigs { //gradle assembleRelease
myConfig {
storeFile file("stone.keystore")
storePassword System.console().readLine("\nKeystore password: ")
keyAlias "stone"
keyPassword System.console().readLine("\nKey password: ")
}
}
这样在执行gradle 命令$ gradle assembleRelease
时会被要求输入密码