cordova项目打包教程

Android app 的打包分为 debug 和 release 两种,后者是用来发布到应用商店的版本。这篇文章会告诉你 Cordova 如何打包 Android release 版本,也会让你了解 Android app 的打包流程。android

建立一个 demo appnpm

为了演示,首先咱们须要建立一个 Cordova 项目的基本步骤。若是你已经对此很熟悉,能够跳过这一步。json

先全局安装 Cordova CLI :windows

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 目录下查看它。app

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 :该程序在D:\android\android-sdk-windows\build-tools\26.0.0目录下,将该程序复制到生成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 官方教程

总结打包方法:
******** 生成数字签名文件(keystore)********
keytool -genkey -v -keystore WX.keystore -alias cordova-demo -keyalg RSA -keysize 2048 -validity 10000

******************* 方法一 、手动生成 **********************
1.生成releaseAPK
cordova build android --release
2.对APK进行签名
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore WX.keystore app-releansigned.apk WX

******************** 方法二 、直接生成带签名的apk *********************

该方法可直接指定签名文件名称,直接生成带签名的apk。
cordova build android --release --keystore="WX.keystore" --alias=WX --storePassword=123456 --password=123456
//keystore 数字证书   //alias 别名   //storePassword 密匙库密码   //password 密匙口令

********************* 方法3、配置文件build.json ********************

每次输入命令行参数是很重复的,Cordova 容许咱们创建一个 build.json 配置文件来简化操做。

--配置文件build.json(注意:放在生成的apk的目录下)
文件内容:

  "android": { 
    "release": { 
      "keystore": "WX.keystore", 
      "alias": "WX", 
      "storePassword": "123456", 
      "password": "123456" 
      }   
    } 
  }
以后直接执行cordova build --release命令

********************* 方法4、用 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 就足够了。

********************* 压缩和优化 ********************

用zipalign压缩和优化APK(zipalign.exe)

该程序在D:\android\android-sdk-windows\build-tools\26.0.0目录下,将该程序复制到生成apk的目录下, 执行zipalign -v 4 app-release-unsigned.apk WX.apk便可。