Android Studio 打包
開(kāi)發(fā)完一款A(yù)pplication之后吩坝,需要對(duì)其進(jìn)行打包,才可以發(fā)布工用戶(hù)使用(release)缠诅。而Android Studio就具備了打包的工具溶浴。有一下兩種打包方式:
- Gradle配置打包
- Build->Generate Signed APK打包
簽名文件
在進(jìn)行打包之前,首先需要一個(gè)簽名文件管引。
eclipse的簽名文件是以.ketstore為后綴的文件戳葵;Android Studio是以.jks為后綴的文件。
簽名文件有幾個(gè)要素
英文名稱(chēng) | 解釋 |
---|---|
keyStore | 密鑰庫(kù)路徑 |
keyStore Password | 密鑰庫(kù)密碼 |
keyAlias | 簽名文件別名 |
keyPassword | 簽名文件密碼 |
默認(rèn)簽名文件
在開(kāi)發(fā)階段汉匙,用到第三方SDK新建應(yīng)用項(xiàng)目時(shí),需要簽名KEY的SHA1生蚁。這里可以使用Android Studio自帶的debug.keystore噩翠。
可以使用命令keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
在終端中直接獲取到簽名key的SHA1信息,如下圖:
~
代表的是賬戶(hù)的根目錄
對(duì)應(yīng)要素:
要素名稱(chēng) | 值 |
---|---|
keystore | ~/.android/debug.keystore |
keyStore password | android |
keyAlias | androiddebugkey |
keyPassword | android |
默認(rèn)路徑下的debug.keystore不存在時(shí)邦投,會(huì)自動(dòng)創(chuàng)建伤锚。如果修改了debug.keystore路徑,并不會(huì)在新路徑下自動(dòng)創(chuàng)建debug.keystore文件志衣。如果在默認(rèn)路徑創(chuàng)建一個(gè)不以debug命名的key屯援,系統(tǒng)還是會(huì)自動(dòng)創(chuàng)建該簽名文件猛们。所以只有使用默認(rèn)路徑,才會(huì)自動(dòng)創(chuàng)建相應(yīng)的key文件
參考
Android Studio獲取調(diào)試包簽名的SHA1值方法狞洋,signing configurations(簽名配置)
創(chuàng)建簽名文件生成Apk文件
通過(guò)Build->Generate Signed APK弯淘,選擇module然后next,點(diǎn)擊creat new...選項(xiàng)創(chuàng)建一個(gè)新的key文件吉懊。如下圖填寫(xiě)一些基本信息
名稱(chēng) | 描述 |
---|---|
key store path | 密鑰庫(kù)路徑 |
password | 密鑰庫(kù)密碼 |
confirm | 確認(rèn)密碼 |
alias | 別名 |
validity | 有效年限 |
first and last name | 名字 |
organization unit | 公司或組織 |
organization | 公司 |
city or locality | 省 |
state or province | 市或洲 |
country code | 國(guó)家代碼 |
然后點(diǎn)擊next->選擇Build Type->Finish庐橙。此時(shí)Apk文件就生成了,同時(shí)簽名文件也生成在相應(yīng)目錄借嗽。
這里注意到态鳖,已經(jīng)利用了Build->Generate Signed APK打包了Apk
。
打包
打包有兩種方式惨寿,在介紹自定義簽名文件時(shí)邦泄,已經(jīng)實(shí)現(xiàn)了一種打包方式:Build->Generate Signed APK
。那么來(lái)看看如何利用Gradle配置打包
Gradle 配置
配置簽名文件
在build.gradle(module:app)中加入下面的代碼
signingConfigs {
release {
storeFile file("foolishdev.jks")
storePassword "9445118798"
keyAlias "foolishdev"
keyPassword "9445118798"
}
}
這里要輸入的信息都是之前創(chuàng)建簽名文件時(shí)對(duì)應(yīng)的四個(gè)要素的值缤沦。
配置Build Type
buile type{
release {
// 不顯示Log
buildConfigField "boolean", "LOG_DEBUG", "false"
//混淆
minifyEnabled true
//Zipalign優(yōu)化
zipAlignEnabled true
// 移除無(wú)用的resource文件
shrinkResources true
//加載默認(rèn)混淆配置文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//簽名
signingConfig signingConfigs.release
}
}
通過(guò)
signingConfig signingConfigs.release
來(lái)配置Build Type的簽名信息虎韵。可以看到這里使用了Gradle配置簽名文件時(shí)配置的Key缸废。
其實(shí)android studio中module默認(rèn)都會(huì)有debug和release兩個(gè)buildType包蓝。debug用于開(kāi)發(fā)時(shí)測(cè)試的版本,而release則是用來(lái)發(fā)布的版本企量。當(dāng)然在這里也可以配置自定義的版本测萎,并配置特有的簽名文件。在Build Variants操作框中會(huì)生成該Build Type届巩。
配置Build Variants
從上圖操作框中可以看到硅瞧,module的Build Variants中有兩個(gè)Type,分別是debug和release恕汇。其中release是剛剛配置的Build Type腕唧。可以選擇任意一個(gè)類(lèi)型進(jìn)行打包瘾英,并且他們會(huì)利用各自配置的Key進(jìn)行打包枣接。
注意到上面Build Type時(shí)并沒(méi)有配置debug type,是Android Studio默認(rèn)自帶的缺谴。其中debug type使用的就是默認(rèn)的簽名文件(debug.keystore)但惶。當(dāng)然也可以在Build Type中配置debug Type并且配置自定義的debug key
生成Apk文件
當(dāng)準(zhǔn)備工作全部完成,執(zhí)行 Run app或者Build->Build apk就會(huì)自動(dòng)在module name/app/build/outputs/apk路徑下生成Apk文件。
注意使用Build->Generate Signed APK生成Apk時(shí)膀曾,Apk文件生成目錄和創(chuàng)建的Key文件目錄相同
參考
Android tips(八)-->Android Studio打包apk县爬,aar,jar包
進(jìn)階
不在Gradle中配置password
signingConfigs { //gradle assembleRelease
myConfig {
storeFile file("stone.keystore")
storePassword System.console().readLine("\nKeystore password: ")
keyAlias "stone"
keyPassword System.console().readLine("\nKey password: ")
}
}
這樣在執(zhí)行g(shù)radle 命令$ gradle assembleRelease
時(shí)會(huì)被要求輸入密碼