要點概述:
1.keystore有兩種格式,即keystore和jks,keystore為舊版本中使用的(eclipse),jks為AS版本專用。
2.創(chuàng)建key的兩種方式,AS方式、命令行方式
3.配置Gradle簽署APK
4.獲取sha1
一、使用Android Studio創(chuàng)建key
1.點擊Build-->Generate Signed APK

進入Generate Signed APK
2.一路Next后,進入Generate Signed APK界面,點擊Create New...

Generate Signed APK界面
3.進入New Key Store界面,點擊右上角的...

創(chuàng)建新的keystore
1.指定一個jks文件。
2.設(shè)置文件讀取的密碼。
3.設(shè)置別名,??會在項目中使用。
4.設(shè)置key的密碼,??會在項目中使用。
5.設(shè)置有效期,默認25年。
6.填寫基本信息,如姓名、公司、所在城市等,??至少填寫一項。
4.進入創(chuàng)建文件界面,注意??:這里需要生成一個jks文件。老版本的keystore格式不支持,AS使用的是jks格式;

設(shè)置keystore
5.點擊Finish之后,返回Generate Signed APK界面。
??如果想要偷懶,可以勾選上Remember passwords,下次就不用輸入密碼啦。
備注:別名和密碼,參考上邊第三步中的3和4。

QQ20170808-155045.png
6.點擊Next 進入如下界面。

選擇編譯版本
1.默認生成,略.
2.選擇打包的版本,debug 或 release
3.打包時,是否將導入model一起打包,沒有倒入的model可以忽略。
4.對jar進行簽名
5.對APK進行簽名
備注:若有倒入的model,3必須選擇包含或者不包含。對于4和5兩種簽名方式,可以單選,也可以全部選擇,至少選擇一項
二、使用命令行創(chuàng)建key
創(chuàng)建代碼
keytool -genkey -v -keystore debug.keystore -alias zxh -storepass 123456 -keypass 123456 -keyalg RSA -validity 14000
備注:
-keystore:設(shè)置生成的文件名稱,包含后綴;
-alias:設(shè)置別名
-storepass:設(shè)置文件的密碼
-keypass:設(shè)置key的密碼
-keyalg:設(shè)置使用的加密算法,一般寫RSA
-validity:設(shè)置有效期,盡可能長啦
命令寫完之后,會要求填寫一下,基本信息,一步步填寫就好了,最終生成的key會存儲在項目的根目錄下。如下圖:

填寫的基本信息

生成key的位置
三、使用Gradle部署APK
1.普通的方式配置Gradle
android {
...
defaultConfig { ... }
signingConfigs {
debug {
storeFile file('/Users/zhangxuehui/Documents/debug.jks')//key的路徑,注意不能與release版本相同
keyAlias 'zxh' //別名
keyPassword '123456' //key密碼
storePassword '123456' // store的密碼,注意是否與key的密碼相同
v1SigningEnabled true //對JAR簽名
v2SigningEnabled true //對APK簽名
}
release {
keyAlias 'zxh'
keyPassword '123456'
storePassword '123456'
v1SigningEnabled true
v2SigningEnabled true
storeFile file('/Users/zhangxuehui/Documents/android.jks')
}
}
buildTypes {
release {
buildConfigField "boolean", "LOG_DEBUG", "false" // 不顯示Log
zipAlignEnabled true //Zipalign優(yōu)化
signingConfig signingConfigs.release //簽名
shrinkResources true //移除無用的resource文件,導入的model不可以配置
minifyEnabled true //混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
signingConfig signingConfigs.debug
}
}
}
2.將簽名信息作為單獨的配置文件
在app的build.gradle同級目錄下創(chuàng)建signing.properties配置文件。
- signing.properties代碼
KEYSTORE_FILE=/Users/zhangxuehui/Documents/android.jks
DEBUG_KEYSTORE_FILE =/Users/zhangxuehui/Documents/debug.jks
KEYSTORE_PASSWORD= 123456
DEBUG_KEYSTORE_PASSWORD=123456
KEY_ALIAS= zxh
DEBUG_KEY_ALIAS = zxh
KEY_PASSWORD= 123456
DEBUG_KEY_PASSWORD= 123456
- buid.gradle中的配置
//加載簽名配置的文件
Properties props = new Properties()
props.load(new FileInputStream(file("signing.properties")))
android {
...
defaultConfig { ... }
signingConfigs {
debug {
storeFile file(props['DEBUG_KEYSTORE_FILE']) //key的路徑,注意不能與release版本相同
keyAlias props['DEBUG_KEY_ALIAS'] //別名
keyPassword props['DEBUG_KEY_PASSWORD'] //key密碼
storePassword props['DEBUG_KEYSTORE_PASSWORD'] // store的密碼,注意是否與key的密碼相同
v1SigningEnabled true //對JAR簽名
v2SigningEnabled true //對APK簽名
}
release {
keyAlias props['KEY_ALIAS']
keyPassword props['KEY_PASSWORD']
storePassword props['KEYSTORE_PASSWORD']
v1SigningEnabled true
v2SigningEnabled true
storeFile file(props['KEYSTORE_FILE'])
}
}
buildTypes {
release {
buildConfigField "boolean", "LOG_DEBUG", "false" // 不顯示Log
zipAlignEnabled true //Zipalign優(yōu)化
signingConfig signingConfigs.release //簽名
shrinkResources true //移除無用的resource文件,導入的model不可以配置
minifyEnabled true //混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
signingConfig signingConfigs.debug
}
}
}
四、獲取sha1
1.命令行方式
- 進入證書所在目錄輸入,獲取證書信息的命令
keytool -list -v -keystore debug.jks -storepass 123456

命令行獲取證書簽名
2.使用AS獲取sha1

QQ20170808-182828@2x.png