Android Studio 打包Apk
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檔案
參考
建立簽名檔案生成Apk檔案
通過Build->Generate Signed APK,選擇module然後next,點選creat new...選項建立一個新的key檔案。如下圖填寫一些基本資訊
簽名信息.png名稱 | 描述 |
---|---|
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
Build Variants.png從上圖操作框中可以看到,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檔案目錄相同
參考
進階
不在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
時會被要求輸入密碼