要點(diǎn)概述:
1.keystore有兩種格式友绝,即keystore和jks键畴,keystore為舊版本中使用的(eclipse)盈罐,jks為AS版本專用。
2.創(chuàng)建key的兩種方式损搬,AS方式碧库、命令行方式
3.配置Gradle簽署APK
4.獲取sha1
一、使用Android Studio創(chuàng)建key
1.點(diǎn)擊Build-->Generate Signed APK
進(jìn)入Generate Signed APK
2.一路Next后巧勤,進(jìn)入Generate Signed APK界面嵌灰,點(diǎn)擊Create New...
Generate Signed APK界面
3.進(jìn)入New Key Store界面,點(diǎn)擊右上角的...
創(chuàng)建新的keystore
1.指定一個(gè)jks文件踢关。
2.設(shè)置文件讀取的密碼。
3.設(shè)置別名粘茄,??會(huì)在項(xiàng)目中使用签舞。
4.設(shè)置key的密碼,??會(huì)在項(xiàng)目中使用柒瓣。
5.設(shè)置有效期儒搭,默認(rèn)25年。
6.填寫(xiě)基本信息芙贫,如姓名搂鲫、公司、所在城市等磺平,??至少填寫(xiě)一項(xiàng)魂仍。
4.進(jìn)入創(chuàng)建文件界面拐辽,注意??:這里需要生成一個(gè)jks文件。老版本的keystore格式不支持擦酌,AS使用的是jks格式俱诸;
設(shè)置keystore
5.點(diǎn)擊Finish之后,返回Generate Signed APK界面赊舶。
??如果想要偷懶睁搭,可以勾選上Remember passwords,下次就不用輸入密碼啦笼平。
備注:別名和密碼园骆,參考上邊第三步中的3和4。
QQ20170808-155045.png
6.點(diǎn)擊Next 進(jìn)入如下界面寓调。
選擇編譯版本
1.默認(rèn)生成锌唾,略.
2.選擇打包的版本,debug 或 release
3.打包時(shí)捶牢,是否將導(dǎo)入model一起打包鸠珠,沒(méi)有倒入的model可以忽略。
4.對(duì)jar進(jìn)行簽名
5.對(duì)APK進(jìn)行簽名
備注:若有倒入的model秋麸,3必須選擇包含或者不包含渐排。對(duì)于4和5兩種簽名方式,可以單選灸蟆,也可以全部選擇驯耻,至少選擇一項(xiàng)
二、使用命令行創(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è)置使用的加密算法,一般寫(xiě)RSA
-validity:設(shè)置有效期斋枢,盡可能長(zhǎng)啦
命令寫(xiě)完之后帘靡,會(huì)要求填寫(xiě)一下,基本信息瓤帚,一步步填寫(xiě)就好了描姚,最終生成的key會(huì)存儲(chǔ)在項(xiàng)目的根目錄下。如下圖:
填寫(xiě)的基本信息
生成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 //對(duì)JAR簽名
v2SigningEnabled true //對(duì)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 //移除無(wú)用的resource文件怯邪,導(dǎo)入的model不可以配置
minifyEnabled true //混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
signingConfig signingConfigs.debug
}
}
}
2.將簽名信息作為單獨(dú)的配置文件
在app的build.gradle同級(jí)目錄下創(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 //對(duì)JAR簽名
v2SigningEnabled true //對(duì)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 //移除無(wú)用的resource文件澄步,導(dǎo)入的model不可以配置
minifyEnabled true //混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
signingConfig signingConfigs.debug
}
}
}
四冰蘑、獲取sha1
1.命令行方式
- 進(jìn)入證書(shū)所在目錄輸入,獲取證書(shū)信息的命令
keytool -list -v -keystore debug.jks -storepass 123456
命令行獲取證書(shū)簽名
2.使用AS獲取sha1
QQ20170808-182828@2x.png