1. 程式人生 > >Cordova 生成android簽名apk 補充

Cordova 生成android簽名apk 補充

網上關於cordova為安卓應用程式生成簽名並生成釋出版本的方法有很多,但是對應的方法要不就是通過eclipse匯入然後借用eclipse釋出,要不就是對應的cordova版本過低(當時還是用ant來build專案的)。查到了方法但都沒有解答這個問題 (題目),所以小白要上陣了~ (參考:Cordova 3.5 為android APK簽名,生成可釋出程式檔案) 
原材料:Cordova 5.4.0; Java SE 8 
當筆者建好一個PhoneGap應用後:

cordova build android
  • 1
  • 1

得到的是 (位於 專案路徑\platforms\Android\build\outputs\apk)

XXXX-debug.apk
XXXX-debug-unaligned.apk
  • 1
  • 2
  • 1
  • 2

筆者看到這裡頓時傻眼了,這是啥啊?於是匯入手機安裝(真是犯傻)不行啊,於是想解決辦法: 
1)首先咱們要生成一個簽名,(作為學過電子簽名法的筆者就不裝逼了),不知道這裡的簽名是否是電子簽名的一種,但是生成原理是一樣一樣的:

keytool -genkey -v -keystore XXXX-release.keystore -alias XXXX -keyalg RSA -validity 40000(推薦取大些,原因是啥我也不知道= =,估計是為了避免過期後再生成,懶唄!)
  • 1
  • 1

這裡是呼叫了Java的一個生成keystore檔案的東西(也是一個檔案,名叫 “keytool.exe”,在Java根目錄/bin中能找到,由於筆者直接在command prompt中呼叫的,所以已經把“%JAVA_HOME%\bin;”加到了環境變數中)

用英語翻譯一下 上面那行生成keystore的命令:(裝逼開始可跳過,參考:java中Keytool的使用總結) 
use keytool.exe to generate a key, which will be stored in XXXX-release.keystore and can also called (its alias is) XXXX,using RSA algorithm, with a validity of 40000 days.

好了!別忘了keystore的位置,為了之後方便(懶)可把keystore拷貝至“專案路徑\platforms\android”下面。

對了再嘮叨一句:Java會讓你輸入密碼,輸入密碼時,你是不會在顯示屏上看到密碼的,別以為是螢幕卡了啊= =

2)然後自然就是用這個新誕生的keystore來為咱的應用簽名: 
且慢!!為PhoneGap應用簽名之前還要配置一下(尼瑪) 
這裡原創內容才開始: 
筆者觀察了一下新版Cordova,用的是gradle來build專案,所以網上的那些設定ant.properties的解決方法都排除掉,不能用,為了看看到底咱需要什麼才能讓cordova知道哪裡找keystore,筆者打開了 “專案路徑\platforms\android”下面的build.gradle檔案,裡面赫然寫著:

if (ext.cdvDebugSigningPropertiesFile == null && file('debug-signing.properties').exists()) {
    ext.cdvDebugSigningPropertiesFile = 'debug-signing.properties'
}
if (ext.cdvReleaseSigningPropertiesFile == null && file('release-signing.properties').exists()) {
    ext.cdvReleaseSigningPropertiesFile = 'release-signing.properties'
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

這是啥玩意?筆者也暫時解釋不清,但是通過關鍵字眼可以看出,咱們需要一個release-signing.properties 來提示gradle keystore的位置,於是在”專案路徑\platforms\android”下面新建一個release-signing.properties :

key.store=XXXX-release.keystore(筆者的理解是:與build.gradle檔案同根同源,在一個路徑下所以直接寫檔名)
key.alias=XXXX
key.store.password=你的store密碼
key.alias.password=你的alias密碼(如果在生成keystore時輸入了y來統一兩者密碼一樣那就和上一行一樣)
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

好了,終於可以給apk簽名了T T,

cordova build android –release
  • 1
  • 1

這之後,咱就能看見在 “專案路徑\platforms\android\build\outputs\apk”下有咱signed過的release版本apk了。 
筆者寫到這裡有點瞌睡了,如有錯誤,請大神指出(鞠躬)~