2020年Android开发突围指南:5大必学技术,让你的代码飞起来!

mysmile 6 0
2020年Android开发突围指南:5大必学技术,让你的代码飞起来!

2020 年引领潮流的 5 大 Android 开发技术

嘿,各位开发者!你是否觉得Android世界更新太快,有点跟不上节奏?别慌,今天我们就来锁定那些真正值得你投入精力的核心技术。本文将为你精准盘点2020年必须掌握的5大技术,助你构建更强大、更优雅的应用。

回顾Droidcon London 2019大会,从Joe Birch的无障碍智能吉到他即将到来的Jetpack Compose,创新点子让人应接不暇。面对海量信息,抓住重点才能不被淹没。

2020年Android开发突围指南:5大必学技术,让你的代码飞起来!

现在,就让我们一起深入这些技术核心。本文将不仅告诉你为什么它们至关重要,还会提供清晰的入门路径。掌握它们,或许用户不会直接欢呼,但它们能让你高效打造惊艳功能,并拥有一个更清爽、可维护的代码库!

1. Kotlin:现代Android开发的必然之选

Kotlin,常被称作“更好的Java”,由谷歌与JetBrains强力支持。尽管Java曾是Android的绝对主力,但Kotlin势头迅猛——如今Google Play上近60%的顶尖应用已采用它。除非涉及底层原生代码(仍用C++),否则Kotlin足以全面替代Java。

其最大魅力在于与Java的完全互操作性。你可以逐步迁移旧代码,无需重写整个应用。两种语言无缝协作,Android Studio甚至能一键将Java转为Kotlin。

这种兼容性,加上更简洁的语法和无数细节优化,让Kotlin在StackOverflow 2019年调查中,跻身最受欢迎编程语言前五,在移动端语言中高居榜首。

迁移现有应用?有个聪明策略:在修改Java文件时顺带转换为Kotlin。尽管这可能增加代码审查的复杂度,但能确保改动部分经过仔细核查,及时发现问题。

Candyspace的代码库中,Kotlin占比已达86%(且持续增长),剩下14%是许久未动的工具类代码。

2. Jetpack:谷歌出品的开发“利器库”

谷歌的AndroidX/Jetpack库是一套强力工具集,旨在简化常见开发任务。比如,用Room处理本地数据库,用LiveData实现数据驱动UI更新。

借助Jetpack,新项目无需重复造轮子,也无需苦等开源方案。你能直接获取那些久经考验的基础组件。这些库更新频繁,功能持续迭代,错误及时修复。它们为协同工作而设计,多用它们能极大减少应用中的意外状况。

2020年Android开发突围指南:5大必学技术,让你的代码飞起来!

从项目伊始就使用Jetpack,能节省数百小时。旧应用也能迁移过来——虽然看似繁琐,但因库的流行,迁移指南随处可见。至少,基础Android组件(视图、片段等)可自动转换。

在Candyspace,我们已运用Data Binding和ViewModel,并计划很快引入Room和Navigation。

3. 模块化设计:构建灵活高效的应用架构

过去,应用常被做成一个臃肿的“巨无霸”模块。这虽便于共享资源,却导致代码无法复用,且任何修改都需全量编译,耗时漫长。

反之,将应用拆分为多个小巧模块,则只需编译改动部分,构建速度大幅提升。模块化还为即时应用(免安装使用)和动态功能(按需安装)等高级特性铺平了道路。

拆分现有应用可能颇具挑战,你会暴露隐藏的设计问题(比如“DateUtility是什么?为什么每个类都用它?!”)。但一旦完成,代码库将变得更健康、更清晰。未来开发新应用时,模块重用将带来巨大的时间节省。

2020年Android开发突围指南:5大必学技术,让你的代码飞起来!

模块化应用架构示例(来源:本文作者)

设计模块化架构虽有难度,但已有成熟原则可循,例如参考Nikits Kozlov关于模块化与构建时间的文章,或Plaid团队分享的迁移经验。

在Candyspace,我们的应用均采用完全模块化设计,最大限度减少构建时间对开发流程的干扰。

4. App Bundle:显著缩减应用体积的交付利器

使用传统APK分发应用时,用户设备必须安装为所有设备准备的资源。这意味着同一图片需存多个分辨率版本,不同架构的库文件也得一并打包,徒增应用体积。

采用App Bundle后,生成的APK仅包含用户设备必需的资源。平均可减小20%的应用体积,对未优化的应用效果更显著。

2020年Android开发突围指南:5大必学技术,让你的代码飞起来!

应用体积缩减示例(资料来源:Google I/O 2018)

App Bundle虽诞生仅18个月,但已覆盖超25%的应用安装!它是谷歌官方推荐格式,且大多数应用几乎无需修改即可转换,重点在于Play商店的签名处理。

Candyspace正稳步迁移至App Bundle,同时努力保持现有工作流(如Slack集成、QA构建、非Play渠道安装)不受影响。Alistair Sykes的文章是绝佳的迁移指南,涵盖了CI服务器、Slack及Google Play内部应用分享等细节。

5. 测试:应用稳定的基石,绝非可选项

没错,就是测试。它虽不炫酷,用户也看不见,但却是确保应用可靠性的生命线。崩溃率直接影响Play商店评分,必须将其控制在低位。

2020年Android开发突围指南:5大必学技术,让你的代码飞起来!

测试金字塔(来源:developer.android.com)

Android测试主要分三类(自上而下):

单元测试:验证单个函数或方法的行为是否正确,例如“我的平方根函数计算准确吗?”

它们构成测试主体,确保代码单元按预期运行。建立信心后,便可进行…

集成测试:验证模块间协作是否顺畅,例如“我的数学模块能和位置模块正常通信吗?”

这些测试确保应用各部分协同工作。确认组件交互无误后,便可实施…

自动化UI测试:验证完整用户体验,例如“用户能在应用中成功标记地点吗?”

它们在真机或模拟器上运行,速度较慢且维护成本较高,但能验证端到端流程。

谷歌建议的测试分布为:70%单元测试,20%集成测试,10%端到端测试。比例越小,通常执行和维护成本越高。

最佳学习资源是官方文档,它详尽介绍了各类测试及其集成方法。

在Candyspace,我们高度重视单元测试,比例甚至高于谷歌建议,以确保所有新类行为可预测。同时,我们正加强自动化UI测试,减少对人工测试的依赖。

编程领域总有无数方法论,但Android拥有一个巨大优势:庞大的开发者社区。优秀技术能迅速普及。当你在网上求助时,搜索“Jetpack LiveData”远比搜索“某个陈旧自定义库”更容易得到解答!

保持代码库健康的关键,在于积极适应变化并重构旧项目。想持续获取最新Android开发实践?强烈建议关注Android开发者博客、/r/AndroidDev社区和Fragmented播客。现在就行动起来,尝试将这些技术融入你的项目,并在评论区分享你的心得吧!

相关问答

Android属于技术栈的一部分吗?

当然属于。在移动化、数字化趋势下,项目往往涉及多端协作。Android作为移动端核心技术,是现代技术栈不可或缺的一环。

Android会被前端技术取代吗?

可能性很低。尽管前端技术发展迅猛,但Android作为一个功能完整的操作系统,应用场景广泛且市场份额依然领先。

Android开发者如何突破技术瓶颈?

多研究大厂开源项目,学习高手代码思路。坚持边学边练,逐步提升。

Java基础不错,如何快速掌握Android开发?

Java基础是良好起点。建议通过系统性的实战项目自学,例如从零开始构建一个完整应用,或跟随高质量的实战教程。

Android逆向开发如何突破瓶颈?

在Android领域,逆向开发仍是一片蓝海。深入钻研协议分析、加固破解或自动化逆向中的任一方向,都可能带来显著收益。

招聘Android程序员至少需要什么技术?

通常需要扎实的Java/Kotlin语言基础和Android SDK精通。熟悉常用框架、性能优化及架构设计者更佳。

三年以上Android开发的核心竞争力是什么?

核心竞争力在于对系统底层原理的深入理解、架构设计能力、复杂问题解决经验,以及快速学习新技术并将其落地应用的能力。

谷歌技术强大,为何Android开发还要用模拟器?

模拟器主要用于便捷的多设备兼容性测试和快速调试。真机调试同样重要,两者常结合使用以适应不同开发场景。

Android和iOS开发,哪个更有前途?

两者均有广阔市场。Android设备存量巨大,iOS生态成熟且用户价值高。选择时可结合个人兴趣、技术背景及市场需求综合考虑。

iPhone用COP封装技术已久,为何Android机型跟进少?

COP封装成本较高,且对手机内部结构设计提出挑战。Android机型更注重成本与综合性能平衡,因此采用相对谨慎。