[Cordova] 建立 sign 過的 Android APK 版本

[Cordova] 建立 sign 過的 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 才行~

 

2. 編譯 release build

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

cordova build --release android

 

建立的過程中,如果密碼沒有寫在 release-signing.properties 的話,

會跳出兩次對話框,分別詢問 key store 和 key 的密碼: 

Screen Shot 2015-07-19 at 12.34.07 PM  Screen Shot 2015-07-19 at 12.34.21 PM  

 

接著就可以看到 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 就是 sign 過的版本,可以正常的在 Android 上安裝囉~

 

(本頁面已被瀏覽過 963 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

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