快速上手,使用 Kotlin 把支付宝小程序装进自己的 App
温盛章
支付宝 高级无线开发工程师
温盛章负责支付宝 Android 端编译构建工具链,同时是 mPaaS 开发工具链开发者,目前关注 Gradle、IntelliJ IDEA 插件,以及 Android 系统架构等领域。
写一个 Android App 或许不难,但企业对于移动应用的要求愈来愈高,不只要求开发速度、稳定度、质量等,甚至希望能具备动态扩展的架构设计、在 App 中自启动小程序。面向这些需求,若是有好的开发工具及平台的支持,将可以大大降低开发及运维的成本。本次网络研讨会特别邀请到支付宝高级无线开发工程师温盛章为大家演示用 Kotlin 开发移动应用,并集成 mPaaS 让 App 具备小程序能力。
主題分享
本次分享共有三个关键字: Kotlin 、 小程序 、 mPaaS 。温盛章首先从用户、开发、技术、平台等四大视角,向大家说明小程序是什么?简单来说,小程序就是一种拥有完整生命周期、应用间相互隔离、独立运行于宿主应用内的应用。而小程序从工作型 App、平台型 App、超级 App 到新阶段一路的演化历程,目前已经可以有接近 Native 的体验和顺畅、也可以有 H5 的快捷发布的优势。
对小程序有概念后,温盛章就以 Android Studio 演示如何在一个 Mobile App 里,以 Kotlin 撰写 Mobile App 的代码,并接上 mPaaS 平台,让 App 有自启动小程序的能力。要接入 mPaaS,首先需在 Android Studio 里安装 mPaaS 插件,并到阿里云的 mPaaS 后台创建一个新建用。接着,在 Android Studio 里通过插件介入 mPaaS 后下载设置文件及基线。再来,依照项目的需求,下载所需的 mPaaS 组件。完成这些设置后,在 Native 部份,仅需 App、Activity、Plugin 三个文件,就可以做出一个接上小程序的简单应用。
小程序的部份,可以通过 mPaaS 的 IDE 撰写 HTML、CSS、JS 完成小程序端的开发,上传至 mPaaS 后台后,就可在 App 里启动。不仅如此,mPaaS 的 SDK 还可以将 Native 端与小程序间打通,两者可以交互传递信息,只要照着文档示例操作,一个具备小程序能力的移动应用,就在不到 1 小时内完成!
听完这场分享后,相信大家都能体验小程序在开发及部署的好处、Kotlin 语法的简洁及 mPaaS 服务的完整性。通过这样的工作流,可帮助您实现“代码仅需撰写一次,便可多端投放”,从而深度提升研发效率。
問答
Q. 学习 Kotlin 可以完全不用懂 Java 吗?或者了解下 Java 的一些基本知识就够了?
温盛章:Kotlin 在设计上有许多语法糖,像是 Extension 可以轻松的依据需要做扩展、Lambda 表达式可以构成 DSL 的能力、Coroutine 把线程封装后更好使用,加上现在 Google 的 Android 团队采用 Kotlin 做为官方语言,所以我觉得可以先以 Kotlin 为主去学习 Android 开发。不过,别忘了 Kotlin 最终还是编译成 JVM 的字节码,所以要搞清楚底层的话,一些基本功还是不能落下。
范圣佑补充:学习 Android 时,可以到 Google 的 Code Lab 上学习,非常适合初学者。
Q. 我的理解是 Kotlin 是负责数据的处理,而像获取安卓手机信息这个功能只需要调用安卓的一些组件就能实现了是吗?
温盛章:这个东西需要隔离开来看,我们可以先把 Kotlin 理解成一个槌子,调用安卓组件我们可以简单的理解成钉子。怎么把钉子打到墙里面,你可以用槌子、也可以用剪刀,只要能完成任务就行。但很明显的,用剪刀把钉子打到墙里估计要比槌子难,所以 Kotlin 在这里就是扮演着槌子的角色。就我自己使用的经验来说,Kotlin 在提升效率这方面带来非常大的帮助。原本用 Java 得写又臭又长的代码,改用 Kotlin 后就变得非常的简洁。
我这边要特别强调一下 Kotlin 里 Null Safety 的特性,以前在 Java 里一个变量是否为 Null 需要在逻辑层里自行解决,但在 Kotlin 里可以用问号,通过编译器就可以预先做好对空值的处理。这部份的强化和提升是我非常喜欢的。
Q. 用 Kotlin 开发安卓,用 Andriod Studio 比较好还是用 IntelliJ IDEA 更方便些,有哪些好用的插件了可以推荐下?
范圣佑:Android Studio 和 IntelliJ IDEA 是使用相同的 IntelliJ Platform 打造出来的,所以在 UI、快捷键操作上其实都很雷同,许多插件也是可以互通的。若你只需要开发 Android 的话,用 Android Studio 其实就可以满足你的需求;但若你不仅需要开发 Android,还需要开发像 Web、数据库的工作,那会推荐使用 IntelliJ IDEA Ultimate 版才能满足各方面的需求。
温盛章:单纯开发 Android 或 Android 与其他工程混在一起的项目,我会推荐用 Android Studio;但假如是纯 Java 或 Kotlin 的项目,我就会推荐用 IntelliJ IDEA,而且非常推荐使用 Ultimate 版,因为 Ultimate 版相比 Community 版提供了更多的功能,非常的好用。
两位推荐的插件包括:
- 在演示过程中可以显示快捷键提示的 Presentation Assistant 插件
- 让 IntelliJ IDEA 可以有像 Vim 一样操作模式的 IdeaVim 插件
- 本次演示的主角 mPaaS 插件(目前仅支持 Android Studio)
- 用 Annotation 让 Java 有一些类似 Kotlin 特性的 Lombok 插件
Q. 有办法可以 Android 模拟器调试吗?
温盛章:以开发 mPaaS 应用来说,因为没有提供 x86 及 x64 的 Native 支援,所以很遗憾的目前没有办法以 Android 模拟器调试,只真机调试。对于 Android 开发者来说,因为 Google 及许多平台的 SDK 对 x86 的支持也不是那么的好,加上考虑自己的电脑是不是够快,所以 Android 开发我还是强调建议真机调试。
Q. 请问手机投屏的软件是?
温盛章:付费版的 Vysor。
Q. 请问小程序怎么不选择 Flutter 作为引擎?
温盛章:小程序的好处是上层使用的语言(也就是使用 HTML、CSS、JS)及下层搭配用 Web View 显示已经固定且稳定,所以 mPaaS 优先支持这样的架构。而 Flutter 在下层使用的引擎不同,我们其实已经有在做尝试,但现阶段还不适合商业公开。等到技术上够成熟后,会再公开 mPaaS 与 Flutter 的版本。
从会后的问卷调研结果看来,大家对用 Kotlin 开发 Android 及小程序开发都有很高的兴趣,相信这场干货满满的分享对想要快速搭建稳定高质量的移动应用有很大的帮助。我们未来也会继续邀请 Kotlin 技术专家针对不同应用场景做分享,敬请期待,我们下次见!