Android 开发有哪些新技术出现?
64 个回答
第一次在知乎回答问题,感觉有些战战兢兢,在大神云集的地方,生怕有些东西说错,让大家笑话。
题主提的这个问题,相信很多开发者都有自己的话要说。Android 的发展确实太快了,每年的都有很多新东西出现,想要覆盖所有新东西感觉也不太可能,我这里主要说一下主要的 Android 的主要新技术发展,其实了解 Android 的发展趋势,可能对开发者更有帮助。
开发工具
- Android Studio: Google 官方放弃 Eclipse 和 Android Studio 普及。AS 虽然不算新,但是对 Android Studio 这个软件的更新速度快的惊人,有大量的新功能发布。例如支持很多注解代码提示注解、Live code template、支持自动生成 Parcelable 实现等等,作为开发者,持续关注这个更新列表 Recent Changes ,一定会让你的写代码的生活更加美好。
编程“语言”
- Kotlin: 作为 Android 领域的 Swift,绝对让你如沐新风。抛弃沉重的 Java 语法,Kotlin 融入了很多现代编程语言的思想,作为开发者,接受新的语言,了解新语言的发展趋势,更有利于开阔你的思路和加深对语言的理解。在 Android 开发上,使用 Kotlin 并不会让你付出什么代价,为什么不来试试? 使用Kotlin进行Android开发。
- React Native: 跨平台一直是程序员的梦想,而且移动应用的跨平台解决方案也很多,因为 Facebook 的参与和力推,让这个解决方案带上了光环。第一个用 React Native 开发的 App 已经在 Google Play 上架 Facebook 广告管理工具,听说 Android 的 SDK 也马上会到来,React Native。
- Sky: 与 React Native 类似,使用 Web 开发语言来做移动平台的开发,虽然这个只是一个尝试,但是这是 Google 自身推出的,特别是在 Java 语言的使用上败诉之后,这可能会有一些作为呢,domokit/sky_sdk · GitHub
开发模式
- Dagger 2:依赖注入并不是什么新技术,但是使用在 Android 确实一个新的尝试。Android App 越来越被当成严肃的大型项目来构建,很多在以前大型服务器开发上使用的技术都被应用到了移动开发。Android 开发分模块开发,使用 Dagger 来松耦合模块。特别值得一体的是,Dagger 2 现在由 Google 亲自接管。 Dagger ‡ A fast dependency injector for Android and Java.
- MVP:因为 Android 并没有严格的业务和界面区分,项目一复杂,就很容易使代码陷入混乱。现在 Android 开发社区对 MVP 模式讨论越来越热,觉得 MVP 是非常适合 Android APP 开发。MVP for Android: how to organize the presentation layer
- RxAndroid: 函数响应式编程(Functional Reactive Programming)也不是新内容,RxAndroid 把 RxJava 带到 Android 环境中。很多时候,编写 Android 程序,你也可以看成是数据的处理和流动,换一种思想编程,曾经看起来很棘手的问题,瞬间就很优雅的解决了:ReactiveX/RxAndroid · GitHub
- MVVM :这是因为开始官方支持 DataBinding,把 MVVM 直接带到 Android 中。数据绑定在 Windows WPF 和 Web 已经非常常见,它非常高效的开发效率,让你只关心你的数据和业务。这也对 Android 开发来说,无疑是一个非常重大的影响:android UI设计MVVM设计模式讨论? - M.A.G.I 的回答
- 插件化:针对大型 Android 项目,很多 App 开始使用插件来分模块构建相对独立的功能。
- Hybrid:完全使用 HTML 5 开发 App,目前还不成熟。但是折中方案在很多情况下是非常适合的,典型的就是微信,大部分信息展示都是通过 H5 来完成,同时通过 Hybird 方式,把 Web 和 Native 打通,提供给网页访问本地资源的能力。
UI设计
- Material Design:已经红遍了大江南北,这方面的讨论实在太多了,而且各种支持库都有了,特别是 Google 官方出了一个支持库 Android Design Support Library。
- Sketch 3: 这是一个专为设计移动端 UI 的设计工具,作为开发者,不用懂那么复杂的 PS 使用,也可以做非常专业设计:https://designcode.io/sketch
说了这么,感觉还有很多东西没有说到,技术的发展是很快,我们可能跟不上每个细节,但是我们会发现这些新技术,很多地方都是相通的。对于开发者,能够保持对新技术的好奇和兴趣时非常难得的,参与到新技术中是技术修养,引领新技术的发展,那就是大神了。
借着回答问题正好梳理一下最近在学习的一些新东西。
Android Data Binding
Android 的 MVVM 框架。因为还处于开发阶段,所以官方只出了一个简单的教程 -
Data Binding Guide。很遗憾教程中有好几处错误,具体的用法可以参考
LyndonChin/MasteringAndroidDataBinding · GitHubFLUX
Facebook 出品 -
Flux | Application Architecture for Building User Interfaces。
用于取代 MVC 模型,最大的优势是采用了 unidirectional data flow,Facebook开源的 React 系列(React.js / React Native)都是基于此模型,新发布的 APP - Moments 也是基于 FLUX 模型,业务逻辑部分使用C++编写,两个平台(Android、iOS)共用了1/3 的代码 -
Flux | Application Architecture for Building User Interfaces。
Go编写跨平台APP
与之前的Go for android 不同,这次是 Google 官方支持,源码没有放出,只在 Google Play 和 AppStore 发布了用 Go 写的 APP -
Ivy big number calculatorSky
基于 Dart 的跨平台框架,国内火爆了几天,现在看来貌似是在玩票。原理借鉴了 React Native,可以参考我之前写的一篇博客 -
Dart更近一步,Sky会一统江湖吗?Infer
Facebook 出品的一个代码静态检测工具,背后有学术界最新的理论支撑,模拟人脑的推理过程,可以有效检测出 Android 代码中的 Null Pointer 和 Resource Leak,关于 Annotation 有一个很好的建议:Program Safely, Annotate Nothing 。
Design Support Library
关于这个网上已经有很多资料了,补充几个学习的好链接。
MD的资源文件 -
Sticker sheets & icons实例源码 -
chrisbanes/cheesesquare · GitHub循序渐进、非常易懂的教程 - Codelab for Android Design Support Library used in I/O Rewind Bangkok session :: The Cheese Factory
比较完整的教程 - Design Support Library
Instagram with Material Design concept is getting real (内容虽然有点老,但是干货很多,强烈推荐)
dexposed
手淘出品的 AOP 框架,淘系 APP 的 hotpatch 就是基于这个框架,用来紧急修复线上 Bug,源码已经开源 - alibaba/dexposed · GitHub
这些都是我最近在学习的一些东西,在大牛眼中可能不算新技,献丑了。
欢迎关注我的 github - LyndonChin (liangfei) · GitHub,我会经常造一些轮子,star一些比较高质量的 repo。