2016Android开发技术篇

转载 2017年01月03日 14:57:32

Android平台

今年Android新版本7.0的出现要比往年早一些,在IO大会前两个月就发布了开发者预览版,与此同时还推出了Android测试版计划,学习微软的Windows Insider,让用户也能提前体验最新版系统。新系统最受欢迎的新功能包括Doze模式和增强的通知中心。

与Android相关的平台今年也获得更新,包括Android Wear 2.0,能够独立运行App;Android Auto,支持在手机上运行,将手机变成车载智能系统;Android Things,由之前的物联网平台Brillo更名而来,。

与开发者相关的新特性包括:

  • 新的Interpreter+JIT+AOT编译器。该编译器减少了应用程序安装时间和存储空间,并在手机空闲的时候编译代码的热点部分,提高性能。
  • Vulkan跨平台的图形和计算API。在2015年发布的Vulkan也终于植入到Android系统中。
  • 多窗口支持。还包括分屏、画中画等等。
  • 能免安装运行的Instant Apps,看上去是革命性的,据分析其原理可能和国内正在研究的插件化/沙盒技术类似,不过到现在也一直处于测试状态。
  • 渐进式Web应用PWA。这是今年Google重点推广的一项Mobile Web技术,大幅提升了离线使用、通知等体验。

在IO大会上还同时发布了Android Studio 2.2,它带来的新特性包括:

  • 将编译器替换成Google自己开发的Jack编译器,以及配套的工具链Jack and Jill.
  • 部分支持Java 8特性,包括lamda表达式,使用这个需要Jack编译器。
  • 新的布局方式ConstraintLayout和相应的可视化编辑器,可以看做是RelativeLayout的增强。它的目标是减少布局的层级,同时改善布局性能,还减少了使用RelativeLayout的复杂性 。

在中国市场方面,Google前不久刚在国内举办了两场规模盛大的开发者大会。发布了新的中文版开发者官网和开发者博客。不过,他们对于Google搜索、Play市场等何时返回国内仍然讳莫如深,从2016年年初就传言Google返华,然而整个2016年进展也并不大。

Android平台2017年预测

从今年的更新可以看到,Android的发展也逐渐步入平缓阶段,人们的目光更多的被Google发布的其它新奇有趣的产品所吸引,比如VR平台DayDream、智能助手和智能IM应用。有人甚至认为Android逐渐被边缘化,有可能被新系统所取代,比如前阵子传言的Andromeda。

不过我想说这种担心是多余的,Android仍然是Google最重要的产品之一,并且是其衍生品Android Wear、Android Auto等系统的基石,所以在近期不太可能有很大的改变。但是我们可以期待底层和工具上的大的创新,如ART运行时、Jack编译器。

另一个在明年可能带来很大改变的技术是Instant Apps,但是因为它很可能必须依赖GMS,在国内不太可能使用。但根据国内在这方面的技术积累,我相信打造相同技术规格、完全兼容的中国版Instant Apps不是难事,说不定明年国内手机厂商会将它作为重点功能进行宣讲呢。

最后,根据Android新版本的普及速度,明年Android 7.0才会逐步在国内推广开,于是开发者们终于可以开始学习Android 7.0的新技术了。


Android开发技术篇

2016对于Android开发来说是非常精彩的一年,黑科技频发,我们可以确定的说在Android应用层开发方面我们已经走在了世界前面。然而,其实很多黑科技都是形势所逼,并且其中一些和Google的官方政策相违背,这是目前热火的表象下的隐忧。

插件化

从去年下半年开始,Android插件化开始进入人们的视野,到今年,开源和分享开始爆发,插件化可以说是Android开发高级技术的集大成者,要掌握它需要对Android系统框架、App运行机制等足够了解,因此成为很多开发者追求的目标。

但是回过头来想一下,插件化的适用场景其实有限,多用于头部的超级应用,一般的中小型App没有必要适用,所以也没有必要盲目追求新技术。

插件化发展到后来,基本都开始追求免安装运行App,也就是沙盒/双开,在这方面我们也有一些商业应用出现,以及开源项目。

这里就推荐一些开源项目:

  • DynamicLoadApk 比较早的一款插件化项目,任玉刚等研发。
  • DroidPlugin 360手机助手推出的插件化项目。
  • VirtualApp 天才少年Lody推出的Android应用双开项目。
  • Small wequick推出的开源项目,包括Android和iOS双平台(iOS平台仅限越狱)。
  • DynamicAPK 携程出品的插件化框架,介绍见此
  • VirtualAPK,滴滴出行推出的插件化项目,尚未开源,介绍见此

热补丁

插件化并不是所有应用都需要,但是热修复却基本是正式的项目都想要的。热补丁与插件化的不同点在于,热补丁的关注点在对应用进行方法级的替换以达成修复。2016年Android的热修复取得了非常大的进展,不但有多家公司分享、开源了自己的热修复项目,而且还催生了商业服务。

这里就为大家盘点一下今年都出现了哪些热修复项目:

  • AndFix,阿里推出的开源项目,并且在其基础之上衍生了商业服务。之前阿里还推出一个Dexposed,但由于一些问题已停止维护。
  • Tinker,微信推出的开源项目,在年中宣布要开源时就引起了广泛关注。
  • Amigo,饿了么推出的开源项目。
  • Qzone超级补丁,暂未开源,演讲视频和PPT见此,社区有人根据其原理研发了Nuwa并开源,现已停止维护。
  • QFix,手Q的热补丁项目,暂未开源,介绍见此
  • Robust,新美大的热补丁项目,暂未开源,介绍见此

RxJava

RxJava是JVM上的响应式编程框架,可以简化异步操作的代码,是Rx系列的一部分,去年年底国内社区开始有人布道,也有很多人分享,RxJava与Retrofit结合可以大幅简化网络操作的复杂性,因此也被人们广泛使用。

推荐文章如下:

Android组件化

Android里的组件化是相对于插件化来说的,插件化追求插件直接完全独立,甚至插件本身是可独立运行的APK,组件化则是在组件独立开发,在编译时仍合成为完整App。

Android组件化的实践的代表是淘宝的Atlas,该项目将于2017年初开源。

Kotlin

Kotlin是老牌开发工具厂商JetBrains推出的一门JVM语言,也非常适合在Android项目中使用,今年推出了1.0版本,并在国内举办了一场线下开发者日活动。

Kotlin被视为Android平台的Swift,可以刷时髦值,从实际开发体验上来说,与JetBrains的IDE结合(Android Studio亦可)也非常不错。国内有些团队和个人已经开始尝试。但由于Java本身很完备,更换语言目前来说只是基于个人喜好。因此要想Kotlin流行,就像苹果推广Swift一样,我们也需要谷歌的推动才会让更多人有兴趣学习和使用。

2017年展望

数一数将于明年开源的一些项目,明年Android开发该讨论我们也心里有数。

  • 插件化。2017年,Android开发领域关于插件化和热补丁的讨论仍将继续,但我希望国内开发者能更多的走出去和国外同行交流,让这些技术不只是一头热。
  • 组件化。其重点在于工程期的辅助工具和编译流程,期待明年除了Atlas之外,有更多的类似项目出现。
  • Kotlin,在这里推这个,也算是我的个人喜好吧,希望明年Google能官方表态支持Kotlin.
  • AI技术。人工智能是目前最火的技术领域没有之一,如何与移动结合结合玩出花来是一个值得探讨的话题。我觉得Android上取得突破的可能性比iOS更大,毕竟Android更开放,玩法更多。

跨平台技术篇

不只是今年,跨平台技术一直在移动开发领域火热非常,毕竟Android、iOS都不是可以轻易舍弃的平台。今年的跨平台技术,相比往年的Xamarin、Titanium等,更实际,更接地气,这也导致了跨平台技术今年讨论的热度更高,都快刷屏了。

今年大家所讨论的跨平台技术,无论是React Native、Weex还是微信小程序,从技术实现来说都是处于Native和Web之间,还是使用Web技术开发,从Hybrid过渡过来是很自然的事情,因此国内不少公司在React Native推出不久就开始使用。

RN及类似技术最光明的未来可能是:类RN首先取代当前App中的WebView,之后会取代一部分Native界面,长期上来说,一些性能要求高的本地库也会提供对它们的支持,如Realm就提供了RN版本,原生开发会被进一步压缩。原生开发,未来可能专注于一些专项研发,如音视频,或公共组件接入和维护。

当然,这种未来不一定到来,但移动开发者要做好心理准备。

React Native

React Native如今的地位毋庸置疑,Facebook没有在国内专门宣讲过,但我已经见识到了它的一些国内铁粉,并且有些公司如携程更是不遗余力的对它进行支持和布道,这种情况下RN发展想不好都不行。

但这样也出现了一些问题,一个是本地化的支持,第二个是有些公司自己对React Native做了优化,但没有反馈给RN项目,这样最终只是做了一个分支版本,他踩的坑别人还是要踩一遍,这样不环保,长远来看还有维护难的问题。

今年在RN上有实践并分享出来的团队的分享如下:

Weex

Weex是阿里手淘团队推出的跨平台开发框架,于今年6月份开源。阿里对该框架非常重视,在全集团推广,并且在今年双十一会场大规模应用,取得了成功。在9月份的JSConf上他们邀请Vue.js作者加入团队担任技术顾问,刚刚发布的0.9版也正式支持Vue 2.0语法特性了。最近它还加入了Apache基金会的孵化器,力争打造成功的开源社区。

相比于React Native,Weex略显年轻,不过由于后发优势,在一些地方优化做的比RN好。至于用哪个,就要开发者自己去探索哪个更适合自己了。

微信小程序

今年下半年,对移动开发最具冲击的可能要数微信小程序了,它的颠覆性不在于技术,而在于对整个移动互联网生态的影响。大部分的产品经理也许不知道RN或者Weex,但他们一定知道微信小程序,也一定在考虑要不要做一个,这就是微信小程序的影响力。

其实,在IM里做平台微信不是第一个,在6月份的WWDC上苹果展示的iMessages,就支持集成其它应用,发红包不在话下,甚至还能打车。可惜iMessages这个应用实在不接地气,在国内也没有什么影响力。而另一个国人同样不怎么了解的IM应用,Facebook Messenger在向微信学习,在今年3月举行的F8开发者大会上,Messenger平台化服务正式对外推出。扎克伯格宣布已有40多项服务接入到Messenger平台。最近它还推出了Instant Games,你可以在FB Messenger里玩游戏了。

这些现象体现的趋势是基于IM的应用分发可能是下一件大事,而这个能参与的只有现有的超级IM。

所以虽然现在微信小程序看上去能做的还很有限,对于移动App没有替代作用,但将来就说不好了,保持关注吧。

PWA

PWA是Google今年力推的一项移动Web技术,在支持Service Worker和Fetch API的浏览器上可以得到完整体验,在不支持的浏览器可以得到降级体验。

我不是很看好PWA,因为它的能力和性能还是有限,国内目前是超级App当道,对于性能都是精益求精,几乎不可能去采用这个方案,更何况它在iOS上的体验是降级的,不支持服务器推送,就这一条也会被Pass掉。而苹果何时支持Service Worker等新特性是说不好的。

对于页面元素少、交互简单的应用可以尝试一下。

热门行业技术篇

2016年还有些“移动+”的领域十分火热,这里指的就是直播和VR/AR,它们除了技术,还有趋势上的问题。

直播

直播是2016年的年度标志事件,其火热程度不用多说,因此也有很多泡沫,在数字上弄虚作假已经是人人皆知的事实。但是要看到,直播的兴起的前提是我们软硬件达到了要求,同时直播是对某些陈旧事物的替代,因此即使泡沫破灭,也可以预见剩下的几家会活得很好。

同时,直播开始作为一个功能模块进入很多App,和其它行业结合,如淘宝、天猫上的直播就给网络购物带来了很好的效果。因此,作为年度热点技术,每个移动开发者都有必要去了解和学习。

直播技术本身涉及到前后端,最有挑战的部分其实不在客户端而是在后端,客户端的部分大多数有了最佳实践,同时在秒开优化上有了很多创新。

VR/AR

与直播相比,VR/AR则是从得意到失意的典型,年初VR还被认为是年度技术,到年底某些做VR设备的厂商传出裁员、倒闭,高端头显设备如HTC vive的销售量也并不大,一下子大家都不看好了,这个领域似乎被资本所抛弃。

但与此同时,使用VR/AR技术的产品屡屡成为互联网的爆点,如Pokemon Go、阿里双十一VR、支付宝AR红包,说明VR/AR在用户体验和交互模式上还是很有潜力,只是我们要找到正确的使用方法。目前来看,基于LBS+AR的游戏是可行的点,VR则在营销上有用武之地。

另外,虽然VR/AR被资本不看好,但互联网巨头仍然重金投入,如Google、Facebook、Microsoft都将VR/AR作为自己的战略发展目标。Google的Daydream更是非常接地气,期待明年当支持设备增多后,给我们更加完善的体验。

总之,VR/AR目前来看并不会死,但现在投入风险很高,建议可以再等等。

还有哪些没有提到?

  • 性能监控与分析。今年不少公司都研发了自己的客户端性能监控系统。
  • 安装包瘦身。Android有魔鬼瘦身,iOS则以滴滴为代表,用clang插件瘦身
  • Hybrid开发,虽然已经是很成熟的技术,但仍有可创新之处,豆瓣和美团都有很好的分享。

技术不会停下脚步,学习永无止境。让我们期待2017年的移动技术吧~

相关文章推荐

Android十大常用技术揭秘-挑战

Android四大组件 http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html   三级缓存 可以用我们上课讲的说 也可以...

Android热修复AndFix混淆后热修复失败,无效

这几天一直在研究热修复,对比了多个框架,最终因为是Eclipse开发,所以把重心渐渐转移到AndFix上面。 AndFix地址:https://github.com/alibaba/AndFix ...

Android开发技术之文件的简单存储—小白篇(二)

近期忙于一个市级赛项,由于比赛需要,所以这两天对android的文件存储进行了一个初步了解。现贴上这两天的学习内容,供新手小白参考,若有不懂或迷惑的地方,可联系本人QQ:1101326120。...
  • dxw2015
  • dxw2015
  • 2015年11月25日 23:33
  • 733

Android开发技术网络篇之── http协议post请求方式

方式一:HttpPost(import org.apache.http.client.methods.HttpPost )Java代码 代码如下:    private Button button1,...
  • pjk1129
  • pjk1129
  • 2011年07月04日 15:56
  • 5205

android开发技术-小白篇(一)

从接触android开始,断断续续也将近两个月了,期间零零碎碎,学到的虽说不多,但也毕竟有所收获,今天抽空总结出来和大家分享,如果有不对的地方,还请各位多多指正!我的qq是:1101326120。...
  • dxw2015
  • dxw2015
  • 2015年11月20日 20:16
  • 1080

android开发技术文章荟萃【2011-10-14】

android系统的媒体音量为0时,游戏的音乐能不能音量不为0 关于如何在不同分辨率下程序的运行 联系人中中的特效 如何解决选中button后变颜色的问题? 为什么点一次键,KeyListen...
  • Iamarmy
  • Iamarmy
  • 2011年10月14日 17:42
  • 291

Android开发技术点

Android通用流行框架大全: 1.缓存:DiskLruCache。 Java实现基于LRU的磁盘缓存。 Github地址:https://github.com/JakeWharton/Dis...

android开发技术文章荟萃【2011-11-2】

Android 小闹钟(三) android如何获取本机ip地址 bitmap获取出的图片大小和原图不一样 请问有人用NDK的EGL类库成功初始化一个opengl的么 PendingInten...
  • Iamarmy
  • Iamarmy
  • 2011年11月02日 13:49
  • 279

Android开发技术铺垫之正则表达式

Pattern正则表达式的编译表示形式。 指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执...

android开发技术文章荟萃【2011-10-11】

如果程序被进程管理工具强行杀掉了.... android框架如何实现根据不同的layout读取不同的.xml文件 Android 怎么实现如下效果? 求救版主啊~~~~~实在没思路了 怎么读大...
  • Iamarmy
  • Iamarmy
  • 2011年10月11日 15:24
  • 371
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2016Android开发技术篇
举报原因:
原因补充:

(最多只允许输入30个字)