[Cordova] 建立簽章過的 Android APK 版本

[Cordova] 建立簽章過的 Android APK 版本

改用 Cordova 來開發 app 之後,在將 Android apk 上架前,

要先解決簽章 (sign) 的問題~

當然我們可以用下列的指令建立出 release build:

cordova build --release android

 

但是這樣子建立出來的 release build 其實是沒有 sign 過的,

從檔案名稱 android-release-unsigned.apk 其實也相當明顯的指出沒有 sign…

如果想要直接安裝這種未 sign 過的 APK,是會失敗的:

Screenshot_2015-07-19-12-30-44

 

之前都是用 Android Studio > Build > Generate Signed APK,

就會跳出一個設定 keystore 和 key 的視窗,

設定好之後就可以做出 sign 過、可以上架到 Google Play 的 APK 了:

Screen Shot 2015-07-19 at 12.22.11 PM

 

用 Cordova 開發 app 的話,這些編譯的動作都是由 Cordova 幫忙做掉了~

要怎麼幫 APK 加上 sign 呢?

 

參考資料:

Sign Releases with Cordova Android

Android Shell Tool Guide

 

1. 建立 release-signing.properties 檔案

在 platforms/android 目錄下,建立一個 release-signing.properties 的文字檔,

內容像是下面這樣:

storeFile=/Users/testuser/AndroidKeyStore 
storeType=jks 
keyAlias=androidkeystore

 

如果想把密碼寫在裡面的話,可以加上下面兩行 (但比較不安全):

keyPassword=password 
storePassword=password

 

這樣的 storeFile 要放的是 keystore 檔案的路徑,

可以是相對於 platforms/android 目錄的相對路徑,或是一個絕對路徑,

不過不能是包含 ~ 字元的路徑,

舉例來說,給 ~/keystore 的話,

它會以為要去找 platforms/android/~/keystore,自然是找不到~

 

至於 storeType 這邊的 jks 是什麼東西呢?

我也不知道,從 Difference between .keystore file and .jks file 來看,

似乎 JKS 是 Java keystore 預設的格式,

Sign Releases with Cordova Android 這邊的範例是寫 storeType=pkcs12,

不過在我的 keystore 上是不適用的,得用 jks 才行~

 

2021/04/04 更新

現在使用 release-signing.properties 檔案的方式已經失效,

必須改成在 Cordova 專案的根目錄下,建立如下的 build.json 檔案:

{
    "android": {
        "release": {
        "keystore": "/Users/testuser/AndroidKeyStore",
            "storePassword": "this_is_your_password",
            "alias": "androidkeystore",
            "password" : "this_is_your_password",
            "keystoreType": "jks"
        }
    }
}

 

請依照自己的情況,修改上面的參數值喔~

 

2. 編譯 release build

一樣用下列的指令建立出 release build:

cordova build --release android

 

接著就可以看到 Cordova 建立了 android-release.apk 和 android-release-unsigned.apk:

Built the following apk(s): 
/Users/testuser/Cordova/MultiLibraryLogin/platforms/android/build/outputs/apk/android-release.apk /Users/testuser/Cordova/MultiLibraryLogin/platforms/android/build/outputs/apk/android-release-unsigned.apk

 

這個 android-release.apk 就是簽章過的版本,可以正常的在 Android 上安裝囉~

 

參考資料:

(本頁面已被瀏覽過 1,482 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料