1. 程式人生 > >Android Studio 打包Apk

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資訊,如下圖:

Android Studio預設key.png

~代表的是賬戶的根目錄

對應要素:

要素名稱
keystore~/.android/debug.keystore
keyStore passwordandroid
keyAliasandroiddebugkey
keyPasswordandroid

預設路徑下的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時會被要求輸入密碼