1. 产品简介
  2. 快速开始
  3. 编写构建流程
  4. 配置构建计划
  5. 构建环境依赖包
  6. 构建制品
  7. 构建节点
  8. 管理构建计划
  9. 系统插件
  10. 自定义团队插件
  11. 最佳实践
  12. 常见问题
  13. 词汇表
持续集成 / 使用持续集成快速构建应用 / 自动构建安卓应用

自动构建安卓应用

一个完整的 Android APP 生命周期包括开发、测试、签名、发布等过程。如何通过工程化方法快速迭代项目,相信是每一位 Android 开发者会遇到的问题。

本文将演示如何实现 Java - Android 项目进行自动化编译构建 / 签名 / 上传到 Generic 制品库进行发布这一完整过程。

前置准备

手动构建

此部分内容将通过手动在本地编译、签名等过程,描述 .apk 文件的开发路径。若你已熟悉此流程,请直接阅读自动化构建

将示例项目中的代码仓库导入至 CODING 项目中的代码仓库中。进行手动构建时推荐使用 Android Studio 编辑器进行开发。

编译构建

示例仓库根目录下的 build.gradle 文件含有项目所包含的依赖,以及依赖拉取的来源。使用 Android Studio 打开项目,在根目录下调出终端,输入 ./gradlew test 命令进行测试。

执行 ./gradlew assembleRelease 命令即可开始编译输出未签名的 apk 文件,更多的用法可参见Android 开发者官方网站

APK 签名

对 APK 文件进行签名将拥有以下优势:

  • 应用升级:当安装应用的更新时,系统会比较新版本和现有版本中的证书。如果证书匹配,则系统允许更新。如果使用不同的证书为新版本签名,您必须为应用分配另一个软件包名称。在此情况下,用户会将新版本作为全新应用进行安装。
  • 应用模块化:Android 允许通过同一证书签名的多个 APK 在同一个进程中运行(如果应用请求这样做),以便系统将其视为单个应用。这样一来,您便可以按模块部署您的应用,并且用户可以独立更新每个模块。
  • 通过权限共享代码/数据:Android 提供了基于签名的权限执行机制,以便一个应用可以将功能提供给使用指定证书签名的另一个应用。通过使用同一个证书为多个 APK 签名并使用基于签名的权限检查功能,您的应用可以采用安全的方式共享代码和数据。

在开始对文件签名前,需确保本地有 java 环境。在终端中运行 keytool 生成 Android 签名证书。例如:

keytool -genkeypair -alias android.test -keyalg RSA -validity 36500 -keystore java-android.p12 -storetype pkcs12

其中 android.test 是证书的别名,将在后续过程中进行复用。运行命令后按照提示输入证书的密码等信息:

最终会在当前文件夹下面生成名为 java-android.p12 的证书文件。使用 Android Studio 进行签名非常快捷,阅读《使用 Android Studio 对应用进行签名》了解更多。

管理构建物

对发布物的管理与版本控制将会有助于应用的持续迭代。CODING Generic 类型制品库提供自定义的 Tag 作为版本标签,可以对 APK 文件进行管理和版本追溯。

  1. 创建 Generic 类型制品库

  1. 将 APK 文件进行拖拽上传

  2. 查看版本列表管理历史版本

自动化构建

手动进行编译、签名与上传 APK 文件至制品仓库本质上都是重复劳作。能否通过自动化工具实现代码更新后就获取最新的制品版本呢?答案是肯定的,下文将介绍如何使用持续集成代替人工执行这些重复操作。

录入证书

在开始配置持续集成前,需要将 APK 签名上传至项目中。若通过在团队内明文共享安全证书,存在效率与安全问题。将证书以凭据的方式录入后,通过调用公开的凭据 ID 即可使用证书。

路径:「项目设置」→「开发者选项」→「凭据管理」→「Android 签名证书」,录入后同时还需勾选需授权的持续集成计划。

配置持续集成

点击项目左侧菜单栏的「持续集成」,轻点右上角的创建构建计划按钮。选择「Java-Android 编译并签名 APK」模板。

代码仓库选择已导入至项目中的代码仓库,APK 签名证书选择在上文中录入的凭据。点击立即构建后,持续集成将自动进行编译构建、签名、将构建物上传至 Generic 制品库。你可以在构建过程中查看各项步骤的执行情况。

你还可以在持续集成设置中的触发规则中勾选「代码源触发」或其他自动触发条件,以实现在推送代码时自动触发持续集成任务,完成应用构建。

总结

至此,我们已经将整个 Android 开发流程中重要的操作步骤完全自动化流水线化,这极大地简化了人工操作,让开发者能更好的从繁琐的开发流程中脱离出来,专注于代码功能的迭代研发。

上一篇将 Ruby 项目发布至腾讯云 TKE
最近更新
感谢反馈有用
感谢反馈没用

在阅读中是否遇到以下问题?

您希望我们如何改进?

工单咨询