1. 程式人生 > >Cordova 打包 Android release app 過程詳解

Cordova 打包 Android release app 過程詳解

TL;DR

Android app 的打包分為 debug 和 release 兩種,後者是用來發布到應用商店的版本。這篇文章會告訴你 Cordova 如何打包 Android release 版本,也會讓你瞭解 Android app 的打包流程。

建立一個 demo app

為了演示,首先我們需要建立一個 Cordova 專案的基本步驟。如果你已經對此很熟悉,可以跳過這一步。

先全域性安裝 Cordova CLI :

npm install -g cordova

在 cordova-demo 目錄建立一個專案,ID 為 com.example.cordovaDemo ,專案名為 cordovaDemo

 。

cordova create cordova-demo com.example.cordovaDemo cordovaDemo

加上 Android 平臺,這會下載一個 Android 專案的框架,並把版本資訊儲存到 config.xml 。你可以去 platforms/android 目錄下檢視它。

cordova platform add android --save

你可以檢查下平臺需求是否滿足。基本上 Cordova 需要你把 Java SDK, Android SDK 和 Gradle 都配置好。

cordova requirements android

現在一個 Cordova 專案就已經準備好了。你可以嘗試構建一個版本。一切順利的話,你會在 platforms/android/build/outputs/apk

 目錄下看到 APK 檔案。這個目錄後面會經常用到,為了方便我們建立一個符號連結 android-apk 。

# 構建 apk
cordova build android

# 建立符號連結 android-apk
ln -s platforms/android/build/outputs/apk android-apk

# 檢視一下這個目錄,你應該會看到 android-debug-unsigned.apk
ls android-apk

搞定!但這個構建的 APK 是 debug 版本的。要構建 release 版本,我們需要先了解一下 Android 手動打包的流程。

Android APK 手動打包流程

Android app 的打包流程大致分為 build , sign , align 三部分。

build是構建 APK 的過程,分為 debug 和 release 兩種。release 是釋出到應用商店的版本。

sign是為 APK 簽名。不管是哪一種 APK 都必須經過數字簽名後才能安裝到裝置上,簽名需要對應的證書(keystore),大部分情況下 APK 都採用的自簽名證書,就是自己生成證書然後給應用簽名。

align是壓縮和優化的步驟,優化後會減少 app 執行時的記憶體開銷。

debug 版本的的打包過程一般由開發工具(比如 Android Studio)自動完成的。開發工具在構建時會自動生成證書然後簽名,不需要我們操心。而 release 版本則需要開發者自己生成證書檔案。Cordova 作為 hybrid app 的框架不像純 Android 開發那麼自動化,所以第一次打 release 包我們需要了解一下手動打包的過程。

Build

首先,我們生成一個 release APK 。這點在 cordova build 命令後加一個 --release 引數局可以。如果成功,你可以在 android-apk 目錄下看到一個 android-release-unsigned.apk 檔案。

cordova build android --release

Sign

我們需要先生成一個數字簽名檔案(keystore)。這個檔案只需要生成一次。以後每次 sign 都用它。

keytool -genkey -v -keystore release-key.keystore -alias cordova-demo -keyalg RSA -keysize 2048 -validity 10000

上面的命令意思是,生成一個 release-key.keystore 的檔案,別名(alias)為 cordova-demo 。

過程中會要求設定 keystore 的密碼和 key 的密碼。我們分別設定為 testing 和 testing2 。這四個屬性要記牢,下一步有用。

然後我們就可以用下面的命令對 APK 簽名了:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore release-key.keystore android-apk/android-release-unsigned.apk cordova-demo

這個命令中需要傳入證書名 release-key.keystore ,要簽名的 APK android-release-unsigned.apk ,和別名 cordova-demo 。簽名過程中需要先後輸入 keystore 和 key 的密碼。命令執行完後,這個 APK 就已經改變了。注意這個過程沒有生成新檔案。

Align

最後我們要用 zipalign 壓縮和優化 APK :

zipalign -v 4 android-apk/android-release-unsigned.apk android-apk/cordova-demo.apk

這一步會生成最終的 APK,我們把它命名為 cordova-demo.apk 。它就是可以直接上傳到應用商店的版本。

自動打包

一旦有了 keystore 檔案,下次打包就可以很快了。你可以在 cordova build 中指定所有引數來快速打包。這會直接生成一個 android-release.apk 給你。

cordova build android --release -- --keystore="release-key.keystore" --alias=cordova-demo --storePassword=testing --password=testing2

但每次輸入命令列引數是很重複的,Cordova 允許我們建立一個 build.json 配置檔案來簡化操作。檔案內容如下:

{
  "android": {
    "release": {
      "keystore": "release-key.keystore",
      "alias": "cordova-demo",
      "storePassword": "testing",
      "password": "testing2"
    }
  }
}

下次就可以直接用 cordova build --release 了。

為了安全性考慮,建議不要把密碼放在在配置檔案或者命令列中,而是手動輸入。你可以把密碼相關的配置去掉,下次 build 過程中會彈出一個 Java 小視窗,提示你輸入密碼。

用 Gradle 配置自動打包

另一種配置方法是使用 Gradle ,一個 Android 的自動化構建工具。 cordova build android 的過程其實就是使用它。你要在 platforms/android 目錄下建立 release-signing.properties 檔案,內容類似下面這樣:

storeFile=relative/path/to/keystore
storePassword=SECRET1
keyAlias=ALIAS_NAME
keyPassword=SECRET2

這個檔案的名稱和位置也是可以通過 Gradle 的配置 cdvReleaseSigningPropertiesFile 修改的。我覺得一般情況使用 build.json 就足夠了。有興趣的可以看這個 Cordova 官方教程

參考資料

相關推薦

Cordova 打包 Android release app 過程

TL;DR Android app 的打包分為 debug 和 release 兩種,後者是用來發布到應用商店的版本。這篇文章會告訴你 Cordova 如何打包 Android release 版本,也會讓你瞭解 Android app 的打包流程。 建立一個 demo app 為了演示,首先我們需

關於ionic混合開發App打包過程-android

哈嘍,大家好,最近OA上線,需要打包apk,學習了一下ionic打包的過程,在網上看的大多都是ionic build android,我的天啊,給我大安卓就這麼一行命令就搞定了嗎?怎麼可能,我是好奇寶寶,下面我就把我學到的分享給大家,針對於ionic打包apk壓縮和優化、加密的一套命令。寶寶準備好了

Android小知識-ActivityManagerService(APP啟動過程)

前言 AMS(ActivityManagerService)的啟動是在SystemServer程序中啟動的,它的職責是用於和所有APP的四大元件進行通訊,Activity的啟動過程就是APP端與AMS端進行通訊,首先理解的一點是APP端與AMS是在兩個不同的程序中,因此APP端與AMS是通過跨程序通訊的。

Android應用程式啟動(二)從原始碼瞭解App的啟動過程

本文承接《Android應用程式啟動詳解(一)》繼續來學習應用程式的啟動的那些事。上文提到startActivity()方法啟動一個app後經過一翻過程就到了app的入口方法ActivityThread.main()。其實我們在之前的文章中《Android的訊息機制(二)之L

Android簽名機制之---簽名驗證過程

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

linux驅動由淺入深系列:PBL-SBL1-(bootloader)LK-Android啟動過程之一(高通MSM8953啟動例項)【轉】

本文轉載自:https://blog.csdn.net/radianceblau/article/details/73229005 對於嵌入式工程師瞭解晶片啟動過程是十分有必要的,在分析、除錯各種問題的時候都有可能涉及到這方面的知識。同時這部分知識也是比較複雜的,因為其中涉及到晶片內部架構,啟動各個階段軟體

Android簽名機制之---簽名過程

一、前言又是過了好長時間,沒寫文章的雙手都有點難受了。今天是聖誕節,還是得上班。因為前幾天有一個之前的同事,在申請微信SDK的時候,遇到簽名的問題,問了我一下,結果把我難倒了。。我說Android中的簽

支付寶APP支付申請配置過程

第一步:你需要申請一個支付寶商家賬戶賬號,登陸之後進入產品中心,進行APP支付產品接入,填寫相關資料,等待稽核。 第二步:進行APP支付申請資訊完善 第三步:進入螞蟻金服開放平臺進行開發者認證。 第四步:認證成為開發者之後,登陸進入平臺,然後再開發者中心進入網頁&移動應用列表。

Android FrameWork——Touch事件派發過程

對於android的視窗window管理,一直感覺很混亂,總想找個時間好好研究,卻不知如何入手,現在寫的Touch事件派發過程詳解,其實跟android的視窗window管理服務WindowManagerService存在緊密聯絡,所以從這裡入手切入到WindowManag

rpm包打包過程(二)——製作原始碼安裝包

製作原始碼安裝包(.tar.gz) 1.      解決依賴的軟體: 系統環境:[紅帽企業Linux.6.4.64位伺服器版].rhel-server-6.4-x86_64 原始碼製作中使用到的軟體為GNU M4,GNU autoconf,GNU automake;GNU

Android】安卓Android打包JDK版本過低cordova build android --release;Requirements check failed for JDK 1.8 or

1.問題描述: 2、解決辦法: 檢視環境變數,發現,自己系統仍然是之前1.6版本,趕緊改成1.8版本的; 右鍵‘計算機’,選擇‘高階系統設定’,然後選擇‘環境變數’ 在系統變數裡

Citrix XenApp登錄App服務器過程

receiver 成功 hash 傳輸加密 .com 身份證 rds logon 建立 詳細流程: 1. 客戶端上的receiver負責解析ICA文件,並根據ICA文件的內容發起連接請求。若是外網訪問,則ICA文件中記錄的是NetScaler的AG FQDN信息,連接請求發

Android系統工程模式啟動過程

這幾天在公司看 Android 系統裡的工程模式方面的程式碼。工程模式就是拿來測試手機的,普通使用者會開啟工程模式的很少,但作為一名 Android 手機的開發者來說,就必須知道了。其實就是在手機撥號盤輸入特定混合數字和 *# 的字串,進入特殊的介面。如輸入 *#06# 可

asp.net打包過程(WEB程式也能打包

{  base.Install(stateSaver);  StreamWriter sw2=System.IO.File.CreateText(Context.Parameters["des"].ToString()+"WebSystem.url"); //Context.Parameters["des"]

iOS AppStore企業賬號打包釋出APP流程

一、通過企業賬號申請證書   1 Certificate Signing Request (CSR)檔案   在Mac系統中進入“鑰匙串訪問”,選擇“鑰匙串訪問”-“證書助理”-“從證書頒發機構請求證書…”,如圖1所示:   —>填寫前兩項,並選擇“儲存

蘋果賬號打包釋出APP流程

賬號型別 蘋果開發者賬號分為個人、公司、企業、和教育四種賬號型別。 個人開發者賬號(Individual)包含免費賬號和付費賬號。免費賬:申請免費賬號就可以從App Store下載軟體;付費賬號:99美元一年,供個人開發使用。個人賬號只能有一個開發者

新聞類APP模板android版)

<span style="font-size:12px;">package com.latu.qingcheng123.adapter; import java.io.File; import java.util.ArrayList; import java.util.List; import

蘋果企業賬號打包釋出APP流程

一、通過企業賬號申請證書   1 Certificate Signing Request (CSR)檔案   在Mac系統中進入“鑰匙串訪問”,選擇“鑰匙串訪問”-“證書助理”-“從證書頒發機構請求證書…”,如圖1所示:   —>填寫前兩項,並選擇“儲存到磁碟”,如圖2所示:

Android專案整合信鴿推送過程

    推送現在在移動專案開發中已經很常見了,比較常見的推送方式有小米推送、極光推送和個推,今天我們所講解的是Tencent的信鴿推送在Android上的應用。 一、信鴿Android專案環境搭建 1、下載信鴿推送SDK,並整合到自己專案中。 2、配置AndroidMa

安卓開發——Android反編譯就是這麼簡單 過程

在學習Android開發的過程你,你往往會去借鑑別人的應用是怎麼開發的,那些漂亮的動畫和精緻的佈局可能會讓你愛不釋手,作為一個開發者,你可能會很想知道這些效果介面是怎麼去實現的,這時,你便可以對改應用的APK進行反編譯檢視。下面是我參考了一些文章後簡單的教程詳解。 (注