Cordova 打包 Android release app 过程详解

2023-05-16

转自:http://www.tuicool.com/articles/673mE3m

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 官方教程

参考资料

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cordova 打包 Android release app 过程详解 的相关文章

随机推荐

  • 学习编程的过程中可能会走哪些弯路,有哪些经验可以参考?

    先说结论 xff1a 没有少走的弯路 走过的弯路最终都会成为自身的财富 前言 xff1a 如果在开始学习之前 xff0c 就想着能少走弯路 xff0c 那多半会走不少弯路 因为关注的重点错了 xff0c 把本来是踏踏实实学习编程知识的时间
  • 【OpenGL-矩阵】OpenCV相机内参(Intrinsics)与OpenGL投影矩阵(ProjectionMatrix)

    参考博客 xff1a https blog csdn net AIchipmunk article details 41489825 spm 61 1001 2014 3001 5502 https blog csdn net xx7804
  • nginx是以多进程的方式来工作的

    nginx是以多进程的方式来工作的 nginx在启动后 xff0c 会有一个master进程和多个worker进程 master进程主要用来管理worker进程 xff1a 包含 xff1a 1 接收来自外界的信号 xff0c 向各work
  • Maven环境的搭建与idea配置

    Maven环境的搭建与 idea 配置 Maven 下载 xff1a http maven apache org download cgi Maven 中央仓库地址 xff1a http search maven org 配置maven 环
  • Java基础知识总结(2021版)

    x1f345 作者简介 xff1a 哪吒 xff0c CSDN2021博客之星亚军 x1f3c6 新星计划导师 博客专家 x1f4aa x1f345 技术交流 xff1a 定期更新Java硬核干货 xff0c 不定期送书活动 x1f345
  • 枚举(enum)

    一 什么是枚举 我们学习过单例模式 xff0c 即一个类只有一个实例 而枚举其实就是多例 xff0c 一个类有多个实例 xff0c 但实例的个数不是无穷的 xff0c 是有限个数的 例如word文档的对齐方式有几种 xff1a 左对齐 居中
  • 程序员面试流程

    程序员面试流程 1 面试的三种形式1 1 电话面试1 2 共享桌面远程面试1 3 现场面试 2 现场面试的具体流程2 1 行为面试环节2 2 技术面试环节2 3 应聘者提问环节 1 面试的三种形式 应聘者通过简历筛选以及笔试后 xff0c
  • Python编程语言之`.rst`文件扩展名

    Python编程语言之 rst文件扩展名 定义 xff1a reStructuredText是文件扩展名为 rst的纯文本文件 xff0c 含义是 重新构建的文本 xff0c 也被称为RST或者是reST xff1b reStructure
  • TX2 CPU kernel-各种不同模式讲解

    文章主要来源 xff1a https www cnblogs com happyamyhope 1 TX2简介 Jetson TX2是由一个GPU和一个CPU集群组成 CPU集群由双核denver2处理器和四核ARM Cortex A57组
  • poco 下c++ http 跨域处理方法

    response add 34 Access Control Allow Origin 34 34 34 response add 34 Access Control Allow Methods 34 34 POST GET OPTIONS
  • qt使用qtelnet编写的mud客户端

    最近使用qt写了一个telnet的mud客户端 xff0c 支持别名和简单触发器 xff0c 连接部分有点小bug xff0c 有时连接不了 xff0c 重启程序即可 xff0c windows下qt各个版本都可以 xff0c Linux下
  • win10下minGW编译64位TBB静态库极其在Qt下的运行方法

    本文使用的是Qt5 12 3带的minGW编译器C 43 43 的64位版 xff0c 进入到tbb目录 xff0c mingw32 make compiler 61 gcc arch 61 intel64 runtime 61 mingw
  • 卫星过站高仰角时,俯仰角度误差较大的原因分析

    在卫星过站高仰角跟踪中 xff0c 有时候会出现俯仰角度跟踪值与引导值较大差异 原因分析 xff1a 使用TLE或精轨根数进行卫星外推计算时 xff0c 计算出的卫星位置与真实位置有位置误差 这个误差与外推的时间长度 xff0c 根数的准确
  • qt安卓程序访问gps

    qt gps 这是qt安卓系统访问gps的简单程序 https gitee com xxsmall qt gps git 根据网上文章做的范例程序 xff0c 很简陋 xff0c 但可以运行 xff01
  • 【Java基础知识 10】Java IO流详解

    Java学习路线 搬砖工逆袭Java架构师 简介 Java领域优质创作者 CSDN哪吒公众号作者 Java架构师奋斗者 扫描主页左侧二维码 加入群聊 一起学习 一起进步 nbsp 欢迎点赞 收藏 留言 nbsp 目录 一 前言 二 I O流
  • 计算卫星进站、最高仰角时位置误差计算

    include lt stdio h gt include lt iostream gt include lt vector gt include lt iomanip gt using namespace std int main std
  • qt如何加载stk

    1 stk版本9 2 2 2 操作系统 xff1a win7 32位 3 首先安装vs2010 4 安装qt xff0c for vs2010 5 安装2010的qt插件 6 激活vs2010 xff0c 并在vs2010中配置好qt的安装
  • centos7 gcc7编译时缺少gmp.h

    在 system Tools gt software 中选择开发库 xff0c 把gmp的开发库装上即可 xff0c 也就是有gmp同时有devel的 configure prefix 61 usr mandir 61 usr share
  • VNC 搭建

    VNC Virtual Network Computer 是虚拟网络计算机的缩写 xff0c 它是一款远程控制工具软件 xff0c 由Olivetti amp Oracle研究室所开发 xff0c 此研究室在1999年并入美国电话电报公司
  • Cordova 打包 Android release app 过程详解

    转自 xff1a http www tuicool com articles 673mE3m Android app 的打包分为 debug 和 release 两种 xff0c 后者是用来发布到应用商店的版本 这篇文章会告诉你 Cordo