Android 开发有哪些新技术出现?

可以从UI设计或者一些核心的算法之类的说起
关注者
7,018
被浏览
491,047

64 个回答

第一次在知乎回答问题,感觉有些战战兢兢,在大神云集的地方,生怕有些东西说错,让大家笑话。

题主提的这个问题,相信很多开发者都有自己的话要说。Android 的发展确实太快了,每年的都有很多新东西出现,想要覆盖所有新东西感觉也不太可能,我这里主要说一下主要的 Android 的主要新技术发展,其实了解 Android 的发展趋势,可能对开发者更有帮助。

开发工具

  1. Android Studio: Google 官方放弃 Eclipse 和 Android Studio 普及。AS 虽然不算新,但是对 Android Studio 这个软件的更新速度快的惊人,有大量的新功能发布。例如支持很多注解代码提示注解、Live code template、支持自动生成 Parcelable 实现等等,作为开发者,持续关注这个更新列表 Recent Changes ,一定会让你的写代码的生活更加美好。

编程“语言”

  1. Kotlin: 作为 Android 领域的 Swift,绝对让你如沐新风。抛弃沉重的 Java 语法,Kotlin 融入了很多现代编程语言的思想,作为开发者,接受新的语言,了解新语言的发展趋势,更有利于开阔你的思路和加深对语言的理解。在 Android 开发上,使用 Kotlin 并不会让你付出什么代价,为什么不来试试? 使用Kotlin进行Android开发
  2. React Native: 跨平台一直是程序员的梦想,而且移动应用的跨平台解决方案也很多,因为 Facebook 的参与和力推,让这个解决方案带上了光环。第一个用 React Native 开发的 App 已经在 Google Play 上架 Facebook 广告管理工具,听说 Android 的 SDK 也马上会到来,React Native
  3. Sky: 与 React Native 类似,使用 Web 开发语言来做移动平台的开发,虽然这个只是一个尝试,但是这是 Google 自身推出的,特别是在 Java 语言的使用上败诉之后,这可能会有一些作为呢,domokit/sky_sdk · GitHub

开发模式

  1. Dagger 2:依赖注入并不是什么新技术,但是使用在 Android 确实一个新的尝试。Android App 越来越被当成严肃的大型项目来构建,很多在以前大型服务器开发上使用的技术都被应用到了移动开发。Android 开发分模块开发,使用 Dagger 来松耦合模块。特别值得一体的是,Dagger 2 现在由 Google 亲自接管。 Dagger ‡ A fast dependency injector for Android and Java.
  2. MVP:因为 Android 并没有严格的业务和界面区分,项目一复杂,就很容易使代码陷入混乱。现在 Android 开发社区对 MVP 模式讨论越来越热,觉得 MVP 是非常适合 Android APP 开发。MVP for Android: how to organize the presentation layer
  3. RxAndroid: 函数响应式编程(Functional Reactive Programming)也不是新内容,RxAndroid 把 RxJava 带到 Android 环境中。很多时候,编写 Android 程序,你也可以看成是数据的处理和流动,换一种思想编程,曾经看起来很棘手的问题,瞬间就很优雅的解决了:ReactiveX/RxAndroid · GitHub
  4. MVVM :这是因为开始官方支持 DataBinding,把 MVVM 直接带到 Android 中。数据绑定在 Windows WPF 和 Web 已经非常常见,它非常高效的开发效率,让你只关心你的数据和业务。这也对 Android 开发来说,无疑是一个非常重大的影响:android UI设计MVVM设计模式讨论? - M.A.G.I 的回答
  5. 插件化:针对大型 Android 项目,很多 App 开始使用插件来分模块构建相对独立的功能。
  6. Hybrid:完全使用 HTML 5 开发 App,目前还不成熟。但是折中方案在很多情况下是非常适合的,典型的就是微信,大部分信息展示都是通过 H5 来完成,同时通过 Hybird 方式,把 Web 和 Native 打通,提供给网页访问本地资源的能力。

UI设计

  1. Material Design:已经红遍了大江南北,这方面的讨论实在太多了,而且各种支持库都有了,特别是 Google 官方出了一个支持库 Android Design Support Library
  2. Sketch 3: 这是一个专为设计移动端 UI 的设计工具,作为开发者,不用懂那么复杂的 PS 使用,也可以做非常专业设计:designcode.io/sketch

说了这么,感觉还有很多东西没有说到,技术的发展是很快,我们可能跟不上每个细节,但是我们会发现这些新技术,很多地方都是相通的。对于开发者,能够保持对新技术的好奇和兴趣时非常难得的,参与到新技术中是技术修养,引领新技术的发展,那就是大神了。

借着回答问题正好梳理一下最近在学习的一些新东西。

Android Data Binding

Android 的 MVVM 框架。因为还处于开发阶段,所以官方只出了一个简单的教程 -

Data Binding Guide

。很遗憾教程中有好几处错误,具体的用法可以参考

LyndonChin/MasteringAndroidDataBinding · GitHub

FLUX

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 calculator

Sky

基于 Dart 的跨平台框架,国内火爆了几天,现在看来貌似是在玩票。原理借鉴了 React Native,可以参考我之前写的一篇博客 -

Dart更近一步,Sky会一统江湖吗?

Infer

Facebook 出品的一个代码静态检测工具,背后有学术界最新的理论支撑,模拟人脑的推理过程,可以有效检测出 Android 代码中的 Null PointerResource 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。