DevOps on DevCloud|如何构建Kotlin开发的Android Apps

举报
伦语春秋 发表于 2019/06/18 11:08:16 2019/06/18
【摘要】 在“DevOps能力之屋(Capabilities House of DevOps)”中,华为云DevCloud提出(工程方法+最佳实践+生态)×工具平台=DevOps能力。华为云DevCloud将推出“DevOps on DevCloud”系列,针对DevOps领域场景,阐述该场景在华为云DevCloud上的实施方法与实践。本次将阐述如何构建Kotlin开发的Android app。

引言:在“DevOps能力之屋(Capabilities House of DevOps中,华为云DevCloud提出(工程方法+最佳实践+生态)×工具平台=DevOps能力。华为云DevCloud将推出“DevOps on DevCloud”系列,针对DevOps领域场景,阐述该场景在华为云DevCloud上的实施方法与实践。

 

201957日,在Google I/O开发者大会上,Google正式宣布Kotlin成为Android app开发者的首选语言(preferred language)。Google在声明中写道:“Android开发将越来越以 Kotlin 为先。……许多新的 Jetpack API 和特性将首先在 Kotlin 中提供。如果你要开始一个新项目,你应该使用 Kotlin 来写;用 Kotlin 编码通常意味着更少的代码——更少的键入、测试与维护。”

Kotlin是现代的静态类型编程语言,支持面向对象和函数式编程。Kotlin主要由俄罗斯团队JetBrains开发,名称取自圣彼得堡附件的一个小岛(Kotlin Island)。自从2017Google I/O大会上宣布Kotin成为Android apps一级开发语言,并且在Android Studio IDE中支持Kotlin后,Kotlin的受欢迎程度持续提高。Google表示超过50%的专业Android开发人员在使用Kotlin。最新的Stack Overflow开发人员调查中,Kotlin被列为第4大最受欢迎的编程语言。

Kotlin要统治Android apps开发,不可避免地会被开发者与Java进行对比。按照JetBrains的说法,创建Kotlin的主要目标是创建一种兼容Java、编译速度至少同Java一样快、比Java更安全、比最成熟的竞争者Scala还简单。目前此说法被业界认为可以站住脚了。Kotlin的以下特性应该成为最吸引Java开发者的特性:


    • 整洁、紧凑的语法

    • 单一类型系统

    • 空安全(Null Safety

    • 函数与函数式编程

    •  数据类

    • 扩展

    • 运算符重载

    • 高级对象与Singleton模式

既然Kotlin成为了Android apps开发的首选语言,而且具有诸多吸引开发者的特性,那么华为云DevCloud如何构建Kotlin开发的Android apps呢?

通常情况下,开发者可以在Android Studio中配置Kotlin开发环境,可以通过git将代码push到华为云DevCloud代码托管的仓库中。此开发过程与Android Java开发没有本质上的不同,因此本文将聚焦在如何进行Kotlin程序的构建上。与Android Java类似,开发者可以使用Gradle进行Kotlin Android apps的构建,从很大程度上降低了开发者的使用门槛。

1      准备工作

1.1    示例App

Simple Gallery是一款照片视频画廊Android App,可以显示不同格式的图像和视频,例如SVGRAW、全景照片和视频。本App完全采用Kotlin编写。Simple Gallery的详细功能可以参考Github上的相关介绍(https://github.com/SimpleMobileTools/Simple-Gallery)。

                            image.png                  spacer.gif

Simple Gallery

1.2    创建项目及代码库

开发者可以访问华为云DevCloudhttps://www.huaweicloud.com/devcloud/),登录后在首页新建项目,选择“空白项目”的Scrum或者看板之一,输入项目名称(例如:Simple Gallery-Kotlin)即可创建项目。

在访问Simple Gallery-Kotlin项目,并进入“代码”-“代码托管后,可以点击新建代码仓库通过2种方式来创建代码库:(1)导入仓库,可以从Github上导入;(2)模板创建,可以用DevCloud已有模板库直接创建。为了提高创建效率,我们采用方式二“模板创建”,在搜索框中输入Gallery可以找到模板。

image.png

模板新建代码仓库

2      构建Kotlin Android App

2.1    GradleGradle WrapperGradle Plugin

由于Simple Gallery项目使用了Gradle构建工具,因此开发者应该精通Gradle相关概念以及最佳实践。在此不做详述,主要厘清GradleGradle WrapperGradle Plugin3个概念。

Gradle:开源的构建自动化工具,相较于MavenGradle在灵活性、性能、用户体验和依赖管理等方面表现更优,是Android官方的系统构建工具。

Gradle Wrapper:是对Gradle的包装,更利于在项目中使用统一的Gradle版本。开发者可以通过gradle-wrapper.properties文件来指定相应的Gradle版本。

Gradle Plugin:是为方便使用Gradle进行配置与编译而开发的插件,它跟随Gradle版本的变迁而变迁。在编译过程中, Gradle 版本需与Gradle版本匹配,否则编译就会失败。关于Gradle PluginGradle的版本对应关系请参考https://developer.android.com/studio/releases/gradle-plugin.html#updating-plugin

2.2    编译构建

在使用编译构建服务前,首先确认一下Simple GalleryGradleGradle Plugin的版本。


    • Gradle版本:在Gradle Wrapper的配置文件gradle/wrapper/gradle-wrapper.properties中的distributionUrl指定了Gradle version5.4

    • Gradle Plugin版本:在build.gradleclasspathcom.android.tools.build:gradle指定了版本为3.4.1

进入项目Simple Gallery-Kotlin,新建编译构建任务,在指定任务名称(例如ci-simple-gallery-kotlin)、源码仓库及分支后,系统会推荐使用“Android APK”模板。

image.png

新建编译构建任务-选择模板

在选择模板后,我们需要在构建任务的构建步骤选择合适的Gradle版本。

按照直觉,一般会选择与项目相匹配的某个Gradle版本。但显而易见,在Gradle的版本选择中,最高可以选择的版本为4.8,与Simple GalleryGradle版本5.4Gradle plugin版本3.4.1不匹配。如果我们强行使用4.8版本,编译构建会报错,错误为“Mini supported Gradle version is 5.1.1.Current version is 4.8.……”

按照Gradle Docs 5.4.1https://docs.gradle.org/current/userguide/gradle_wrapper.html)中说明,执行任何Gradle构建的推荐方式是使用Gradle Wrapper。因此,为了构建Simple Gallery应用(或者其它Android App),我们可以不指定具体的Gradle版本,而是选择“Gradle Wrapper(推荐)”。

image.png

新建编译构建任务-选择工具版本

在发布Android apps时,需要对Android APK进行签名。Android APK签名有2种方式:


    • 方式一:通过build.gradle文件配置签名信息。此种方式存在安全隐患,不推荐。

    • 方式二:通过DevCloud编译构建服务提供的“Android APK签名”步骤。

我们在构建任务ci-simple-gallery-kotlin中添加步骤,通过搜索“Android APK签名即可参加此步骤,然后输入Keystore文件、Keystore password、别名(Alias)、key password。这些信息会加密显示,解决了方式一的安全隐患。

image.png

新建编译构建任务-Android APK签名

在创建编译构建任务后,可以手工触发执行。构建任务顺利执行后,可以在发布”-“软件发布仓库中下载APK,并安装到手机上进行验证。

image.png

编译构建任务执行

Kotlin成为Android apps开发的首选语言,在构建工具上采用Gradle,大大降低了构建的门槛儿,也使得华为云DevCloud的编译构建服务(CloudBuild)能够支持Kotlin Android apps的构建。当然Kotlin不仅仅可以开发Android apps,也可以用来开发服务端应用。尽管对于Kotlin仍然很多成长的空间,然而在数字化转型时代,对于开发者来讲,Kotlin成为一种新选择,同时华为云DevCloudKotlin的支持,也将协助开发者走得更远。



华为云DevCloud作为一站式云端DevOps平台,集成华为近30年研发实践和前沿理念,面向开发者提供研发工具服务,让软件开发简单高效。现支持5人以下额度范围内,可以免费使用,并且可以预约免费的产品演示和技术交流,详情查看华为云官网

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。