资讯专栏INFORMATION COLUMN

Cordova 打包 Android release app 过程详解

kk_miles / 1727人阅读

摘要:上面的命令意思是,生成一个的文件,别名为。然后我们就可以用下面的命令对签名了这个命令中需要传入证书名,要签名的,和别名。最后我们要用压缩和优化这一步会生成最终的,我们把它命名为。

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 的密码。我们分别设置为 testingtesting2。这四个属性要记牢,下一步有用。

然后我们就可以用下面的命令对 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 官方教程

参考资料

Ionic: Publishing your app
Android Studio: Sign Your App
Cordova: Android Platform Guide
How to automatically sign your Android apk using Ionic framework and Crosswalk

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/12839.html

相关文章

  • Cordova 打包签名 Android release app 过程详解cordova创建app

    摘要:很久之前就想写这篇博客,但是一直没有时间,今天抽空来整理一下,总结一下的创建打包签名。 很久之前就想写这篇博客,但是一直没有时间,今天抽空来整理一下,总结一下cordova的创建、打包、签名apk。对于cordova所需的打包环境,如node,cordova的安装,这里就不再多说,度娘上有很多... 1.cordova命令创建一个项目 cordova create testApp co...

    objc94 评论0 收藏0
  • IONIC 云端打包(在线编译)

    摘要:为什么要在线打包本身是基于,的打包又依赖于等等。在编译环境配置的道路上一路填坑屡战屡败之后,遂寻求其他出路。国内的跨平台开发解决方案等都提供云端打包的服务,不用配置本地编译环境,就了一下是否有提供云打包的服务。 为什么要在线打包 Ionic本身是基于Cordova,Cordova的app打包又依赖于XCODE、ANDROID SDK、Gradle、Maven等等。在Android编译环...

    garfileo 评论0 收藏0
  • vue+Cordova

    摘要:系列安装安装搭建工程注自定义命名工程加入注自定义命名注意事项修改目录下的执行时,会把打包内容指定到文件夹内,根据文件夹内容构建。添加平台在加平台前,需要修改的内容,包名的命名一般是,与申请微信时所用的包名对应。 vue-cordova vue2.0系列+Cordova 安装vue-cli npm install -g vue-cli 安装Cordova npm install -g c...

    刘厚水 评论0 收藏0
  • cordova 热更新配置

    摘要:基础配置在你的项目下面添加热更新插件全局添加对应的插件执行域名上面控制台输出信息中的最后一个选项填你的服务器放置需要热更新代码的地址。这样你的项目就可以热更新了。把你项目中上传到服务器放置热更新代码的位置,再打开你的就会自动更新了。 基础配置 在你的cordova项目下面添加cordova热更新插件 cordova plugin add cordova-hot-code-push-p...

    shery 评论0 收藏0
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo

    摘要:经过网上查找很多资料,发现很多只有的项目整合,但是使用插件的文章很少,现在把从创建和创建到使用插件到项目打包到手机运行过程记录下来先上项目结构目录项目创建安装环境这个这边就不描述了,网上很多教程创建应用创建项目为目录命名空间项目名称添加平台 经过网上查找很多资料,发现很多只有vue+cordova的项目整合,但是vue使用cordova插件的文章很少,现在把从创建cordova和创建v...

    zhonghanwen 评论0 收藏0

发表评论

0条评论

kk_miles

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<