Android开发周报:微信模块化重构实践、滴滴插件化项目开源
penguin
7年前
<h2 style="text-align: left;"><strong>新闻</strong></h2> <ol style="list-style-type:decimal"> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750669953012905" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">7月份安卓各版本份额:牛轧糖终于突破两位数</a>:谷歌近日给出了安卓系统各版本最新的份额数据,去年推出牛轧糖版本(7.0,7.1)终于达到了两位数的市场份额,占11.5%。2015年推出的棉花糖仍然占据统治地位,市场份额达31.8%,之后是棒棒糖,也高达30.1%。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750670050275931" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">《谷歌暗示:Android 8.0系统正式版即将到来》</a>:从谷歌发布信息来看,谷歌会于本月底推送Android 8.0的最后一个开发者预览版,此版本将接近于最终正式版。据外媒softpedia报道,谷歌已经证实Android 8.0的正式版会在2017年第三季度正式发布,最快下月底推出。首批机型包括Google Pixel和Google Pixel XL,以及Nexus 5X和Nexus 6p。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750223622056516" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">《Google放出Android Things Console新预览》</a>:去年底,Google 发布了自家的物联网平台 —— Android Things(原 Project Brillo)—— 以便开发者们打造基于连接设备的新体验,并与微软的 Windows 10 IoT Core 展开竞争。在最初预览发布之后,Google 一直在频繁增强 OS 和添加新功能,包括支持 Google Assistant SDK 。而现在,该公司又放出了 Android Things Console 的预览。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750670159405031" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">《Google Play商店V8更新:在可更新应用列表直接查看更新日志》</a>:Google Play有了新的版本,你可以将其升级到V8,虽然我们不知道这个版本里面所有的新功能,但至少有一个重大的变化,那就是你可以直接在可更新应用的列表中点击箭头,展开应用的更新日志,而不用挨个点进去看。</p> </li> </ol> <h2 style="text-align: left;"><strong>教程</strong></h2> <ol style="list-style-type:decimal"> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750670240184416" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">《微信Android模块化架构重构实践》</a>:随着代码膨胀,一些问题开始突显出来。基础工程一直处于不断膨胀的状态,同时主工程也在不断变大。同时基础工程存在中心化问题,许多业务Storage类被附着在一个核心类上面,久而久之这个类已经没法看了。此外当初为了平滑切换到gradle避免结构变化太大以及太多module,我们将所有工程都对接到一个module上。缺少了编译上的隔离,模块间的代码边界出现一些劣化。虽然紧接着开发了工具来限制模块间的错误依赖,但这段时间里的影响已经产生。在上面各种问题之下,许多模块已经称不上“独立”了。所以当我们重新审视代码架构时,以前良好模块化的架构设计已经逐渐变了样。因此,微信团队决定重构。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750670323506302" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">《滴滴插件化项目VirtualAPK开源》</a>:滴滴团队在 2016 年开始研究插件化方面的技术,经过半年的开发、测试、适配和线上验证,目前推出了一款比较完善的插件化框架:<a href="/misc/goto?guid=4959750224245156431" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">VirtualAPK</a>。之所以现在推出来,是因为 VirtualAPK 在内部已经得到了很好的验证,在迭代过程中不断地做机型适配和细节特性的支持,目前已经达到一个非常稳定的状况,足以支撑滴滴部分乃至全部业务的动态发版需求。目前 VirtualAPK 应用于滴滴乘客端和优步中国 APP 中,大家可以去体验。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750224089759686" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">《WebView安全性的新功能》</a>:应用程序中对于外部和不信任内容的处理经常是重要的功能之一。新闻阅读器显示头条新闻文章、购物应用展示销售物品的目录。作为处理不信任内容而带来的相关风险是一个攻击者能够损害您的应用程序主要的方式之一,即传递给你错误格式的内容。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750670465942547" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">《GIF简述及其在QQ音乐的应用》</a>:GIF(Graphics Interchange Format)是CompuServe公司在1987年开发的图像文件格式,原义是图像互换格式。GIF是一种基于LZW算法的连续色调的无损压缩格式,其压缩率一般在50%左右,它不属于任何应用程序。本文详细介绍了GIF的知识点。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750224166478636" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">《深入理解 Android 控件》</a>:本篇文章主要通过源码讲述 Android 控件系统,包括输入事件是如何产生的, View 是如何绘制的,输入事件是如何传递给 View 的,Window token 与 type 之间的联系等。整个系统比较复杂,每个部分只能点到为止,有兴趣可以继续深入,主要是让读者对 Android 控件系统有一个大体的认识。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750670586553663" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">《Android上的Notification》</a>:Notification是自Android发布以来就有的API,也是应用程序中最常用的功能的之一,开发者对其应当是相当的熟悉了。在Android近几年的版本更新中,几乎每个版本都会对系统通知界面,以及相关API做一些的改变。这些改变使得开发者可以更好的控制应用程序的通知样式,同时也使得通知功能更易于用户使用。本文详细讲解了Notification方面的知识,推荐大家阅读。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750670665924463" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">《Android NDK开发扫盲及最新CMake的编译使用》</a>:本文解释了JNI、NDK, 以及分别和 Android 开发、c/c++ 开发的配合。并且在解释过程中对 Android.mk、Application.mk、ndk-build、CMake、CMakeList 这些常见名词进行扫盲。本文旨在简介 Android 中 NDK 是什么以及重点讲解最新 Android Studio 编译工具 CMake 的使用,对于入门NDK开发很有帮助。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750670750329392" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">《微信移动数据库组件WCDB(四) — Android 特性篇》</a>:微信的移动端数据库组件 WCDB 已经正式开源了,有关注的小伙伴可能已经用上了。之前已经发过几篇 iOS 和修复的文章,Android 由于接口跟系统几乎一样,相信大家都比较熟悉,不熟悉用法也可以到 Android Developer 官网看一下。但是,我们也有一些特色功能和优化大家可能不容易注意到, 本文为我们进行了详细介绍。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750670826482013" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">Android 平台 Native 代码的崩溃捕获机制及实现》</a>:在Android平台,native crash一直是crash里的大头。native crash具有上下文不全、出错信息模糊、难以捕捉等特点,比java crash更难修复。所以一个稳定、可靠的异常处理组件显得尤为关键。</p> </li> </ol> <h2 style="text-align: left;"><strong>开源项目</strong></h2> <ol style="list-style-type:decimal"> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750670909507563" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">RePlugin</a>:RePlugin是一套完整的、稳定的、适合全面使用的,占坑类插件化方案,由360手机卫士的RePlugin Team研发,也是业内首个提出”全面插件化“(全面特性、全面兼容、全面使用)的方案。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750670992417349" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">SmartRefreshLayout</a>:Android智能下拉刷新框架,支持越界回弹,集成了几十种炫酷的Header和 Footer。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750671078050875" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">AppUpdate</a>:Android 版本更新解决方案。界面和功能都很赞。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959750671172746430" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">PopsTabView</a>:PopsTabView是个filter容器,他可以快速,构建不同筛选样式,自由组合成一组tab。</p> </li> <li style="text-align:left"> <p><a href="/misc/goto?guid=4959749411533796956" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">PaletteImageView</a>:懂得智能配色的ImageView,还能给图片设置多彩的阴影。</p> </li> </ol> <p style="text-align:left">感谢<a href="/misc/goto?guid=4959637708567920700" style="text-decoration: none; color: rgb(40, 106, 178); outline: none !important; margin: 0px; border: 0px; padding: 0px;">徐川</a>对本文的审校。</p> <p style="text-align:left">来自:http://www.infoq.com/cn/news/2017/07/Android-weekly-wechat-re-didi?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=news</p>