Android 开发的昨天、今天和明天

混沌之初

很难相信,如此的一个系统竟然会有 80% 的市场占有量!在我个人看来,Android 能够做到如此成功在早期并不是它足够的优秀,而是同期的竞争对手做得比它更好。

为什么?我亲爱的读者,,在那个时候到处都是问题好吗:

糟糕的开发工具(甚至包括 IDE)

你尝试过用铁锹修车吗?或者,开着你爷爷曾经使用过的有着 40 年历史的Yugo载着姑娘去兜风?在那个时代 Android 开发有且只有一个「相对」官方的开发工具:Eclipse 。

请您相信我,Eclipse 有各种的问题甚至能让你在十分钟之内发疯!Eclipse 的 ADT 插件简直就是「Bug 与 Crash 齐飞,重启和关闭共一色」。尤其在相对复杂的项目开发上,那酸爽简直不敢相信!

很大的程度上,光就是 Eclipse 这个开发工具就吓到了很多入门开发者,让他们投入其他开发阵营的怀抱(对,例如 XCode)。

碎片化

Android 的碎片化严重得可以用张麻子脸上的痘痘来形容,我们先来说说软件方面的。Gingerbread (2.3.7) 是相对比较老的系统版本了,对比同期的 iOS 4.x 系列,目前还有百分之 15-20 个点(可能具体地区的占有率稍有不同)。

您或许已经知道,Android 4.0(Ice Cream Sandwich) 是一个巨大革新的版本,新的 UI、新的 API、新的屏幕分辨率,这一切看起来非常的美好。但,缓慢的用户迁移过程让我们不得不面对这些优秀新系统特性的同时,同时还需要兼容那老旧的系统。于是为了兼容新老的两套系统,项目开发中多了非常多的兼容代码,这会使得应用到处是 Bug 和奔溃。

(这段译者自己添加,吐槽我最擅长了。)除了软件方面,硬件的碎片化的问题更加的严重。你甚至不了解你的应用会在什么样的硬件上运行,你需要获取用户的位置信息,对不起设备可能没有 GPS 甚至没有基站定位;你需要打开摄像头扫描二维码,对不起设备可能没有摄像头、即便有摄像头但运行内存不够,崩溃!这个时候用户是嫌弃自己的硬件呢,还是说您的应用有问题…

硬件方面最头疼的还是屏幕分辨率的问题,Android 开发过程中在资源(resource)目录下有各种的目录(drawable-xxhdpi、drawable-xhdpi、drawable-mhdpi、etc…),你需要针对不同的分辨率调整自己的资源文件,对相信我这块有时候会比编码的时间还长!

缓慢的模拟器

当你完成一个应用以后,首先要测试在各个不同 Android 版本以及屏幕分辨率下的运行情况,所以我们购置了不下二十台 Android 设备用于测试。

听起来似乎有点夸张?好吧,感谢上帝我们还有 Android 模拟器!

然后,你兴冲冲的跑去建立 Android 模拟器并尝试让它跑起来,你会发现半小时后你会哭!先不说它那缓慢的运行速度,就连调试过程中你甚至会开始思考你的人生。

从此以后你再也没有勇气打开运行过它,它只是成为你机子文件系统中一块占用地方的文件而已。

UI

「设计 Android 应用是多么得无趣!」如果你对比过同期的 iOS 应用,那么 Android 的应用竟然会如此得暗淡无色。对比 iOS 那流畅的动画、交互以及细节,你会觉得 Android 应用一切都是「静止」的!

当你打算给 Android 添加点生气的时候,你会发现还是那些老旧的系统(例如 Gingerbread)囚禁了你的创意和思想、乃至期望。

全新

我们将时间推倒 2013 年,这些糟糕的事情总算有了一些改变。

那个时候问题已经足够糟糕到连 Google 自己都看不下去的程度,即便 Android 4.0 发布至今对于上面的问题稍微有些缓解,但还不足够达到能够彻底解决问题的程度。

直到 Android 5.0(Lollipop) 的发布。

所有人都在思考 – Google、设备提供商、开发者。所有人都会自问这样的问题,就是「当我们有了个相对稳定的系统、上千万的应用以及对应的用户。那么我们应当如何让 Android 这个巨无霸化繁为简?如何将开发的过程变得优雅、吸引更多的人加入这个行列?」

Android 5.0(Lollipop) 有着巨大得改变,那些非常多的特性出于篇幅的考虑我只能列出我个人认为重要的几个点:

Android Studio

Android Studio 在 1.0 版本以后就变得非常的稳定。我无法从只言片语来描述这个应用能够给我们带来的巨大的变革。如果您愿意了解详细信息,可以参看原先我写的两篇文章(这里和这里)。

这个 IDE 是如此的优秀,以至于 Eclipse ADT 插件已经停止了官方的维护,因此严重推荐原先如果开发 Android 的同学迁移到这个 IDE 上。

人生苦短、及时行乐。

Gradle

Gradle 是个全自动化的构建工具,在 Android Studio 已经全面替代了 Apache Ant 作为主要的构建系统。

这个全新的系统将会给构建 Android 应用带来全新的体验(听着耳熟?)。当您设置好构建配置脚本以后,所有剩下的事情都将不用你操心。

译者注:Gradle 在大陆使用建议还是需要挂代理,Sigh…

Lollipop

Google 说过 Lollipop 是有史以来变革最大的系统版本(每次它都这样说),我希望他们是对的。

同时,也希望目前的主流机型能够升级到这个版本(译者:个人觉得原文作者有些乐观)。

Lollipop 之外 – Material Design

理所当然,作为 Lollipop 提出的重点之一,自然会有很多的笔墨来阐述Material Design这个新的设计理念。我个人非常同意 Material Design 的其中之一的理念,那就是「所有的东西都是重要的(everything is important)」。

例如动画,长期以来我们的观点是动画只是 效果 的一部分,而 Material Design 主张动画也是有 含义 的,就好比文章分段的间隔符。

我们重新设计、重新开发符合 Material Design 的应用,最终的目的在于应用并不仅仅是生活的一部分,而是能像水和空气一样够让它融入到生活中的每处,让它无处不在。

这就为了以后即便在不同的平台下不同的应用看起来风格和体验也是统一的。

Lollipop 之内 – ART

对于 Material Design 提供的外在设计元素,我们开发人员最关注的还是其内在的改变。一个新的运行时(runtime system)称之为 ART 的就内在其中。

其实 ART 并不是新鲜事物,首次出现应该在 Android 4.4(Kitkat)中。我们之所以重新介绍它是因为在 Lollipop 中 ART 已经全面替代了 Dalvik 成为系统默认的运行时(runtime system)。

当你困难失望的时候,最重要的是事瞧得起你自己;

Android 开发的昨天、今天和明天

相关文章:

你感兴趣的文章:

标签云: