Android博客周刊第72期
lihongfei
7年前
<h2><strong>新闻</strong></h2> <p><a href="/misc/goto?guid=4959751445851687329" rel="nofollow,noindex">1.Android 大神 Jake Wharton 宣布入职 Google</a></p> <p>上个月我们报道了Android 大神 Jake Wharton 宣布从 Square 离职的消息,当时 Jake Wharton 尚未透露他的下一步动向,不过有网友猜测去 Google 的可能性比较大,原因是Google 近年来时常有邀请他去做一些分享,包括今年的 Google IO 大会上,也有邀请去做一个关于 Kotlin 的分享。</p> <p><a href="/misc/goto?guid=4959010303876847013" rel="nofollow,noindex">2.Android 8.0正式版暂定本月8月21日发布</a></p> <p>Android O正式版何时推送,成为目前不少安卓用户关注的重点,从时间安排上来看,本月谷歌一定是会推出的。爆料大神evleaks刚刚在自己的推ter上爆料称,Android 8.0正式版预计会在下下周发布,准确时间极有可能是8月21日。</p> <p><a href="/misc/goto?guid=4959751445972955041" rel="nofollow,noindex">3.Android 8.0有望于8月21日正式登陆Pixel/Nexus</a></p> <p>Google 已经向放出了第四和最后一个既定的 Android 8.0 开发者预览版本,接下来就看该公司何时向受支持的 Pixel 和 Nexus 设备推送最终正式版本了。上个月的时候,该公司披露其计划在 2017 年 3 季度向 AOSP</p> <h2><strong>国外博客</strong></h2> <p><a href="/misc/goto?guid=4959751446058115744" rel="nofollow,noindex">1. SOLID Android analytics with RxJava2</a></p> <p>In this article Aris Papadopoulos will explain how to properly create an Analytics system while following the SOLID principles and using RxJava2 for the heavy lifting.</p> <p><a href="/misc/goto?guid=4959751446148025753" rel="nofollow,noindex">2. Exploring Nearby Connections 2.0</a></p> <p>The new API for Nearby Connections greatly improves upon the the first version by having offline support, higher-bandwidth operations and lower latency. Caren Chang shares some examples of how to use this new API.</p> <p><a href="/misc/goto?guid=4959751446229180039" rel="nofollow,noindex">3. How to make complex requests simple with RxJava in Kotlin</a></p> <p>Intersting post by Tamás Kozmér how to make complex API requests simple using RxJava and Kotlin. You will learn how to create a model constructed from multiple requests.</p> <p><a href="/misc/goto?guid=4959751446333794892" rel="nofollow,noindex">4. Save your backend from a responsive UI using RxJava</a></p> <p>In this article by Ricardo Belchior you'll learn how to buffer certain actions (and thus taking off load from your backend) using RxJava.</p> <p><a href="/misc/goto?guid=4959751446440189251" rel="nofollow,noindex">5. Kotlin From Scratch: Variables, Basic Types, and Arrays</a></p> <p>In this first tutorial in the Kotlin From Scratch series, you'll learn about the language basics: comments, variables, simple types, arrays, and type inference.</p> <p><a href="/misc/goto?guid=4959751446526034857" rel="nofollow,noindex">6. Two-Way Data Binding on Android: Observing Your View with XML</a></p> <p>Great article by the guys over at Big Nerd Ranch about leveraging BindingAdapters to create a two way data binding with XML.</p> <h2><strong>国内博客</strong></h2> <p><a href="/misc/goto?guid=4959751446609097173" rel="nofollow,noindex">1.5分钟教你打造一个秒开的 Android App</a></p> <p>近日在开发过程中,发现每次点击app从桌面启动都有一个在桌面明显的等待时间,机型越低端的越明显,冷启动优化看来已经势在必行,所以怒而一顿研究再解决之。话不多说先上优化前后效果图</p> <p><a href="/misc/goto?guid=4959751446692459497" rel="nofollow,noindex">2.HenCoder Android 开发进阶:自定义 View 1-5 绘制顺序</a></p> <p>前面几期讲的是「术」,是「用哪些 API 可以绘制什么内容」。到上一期为止,「术」已经讲完了,接下来要讲的是「道」,是「怎么去安排这些绘制」。这期是「道」的第一期:绘制顺序。Android 里面的绘制都是按顺序的,先绘制的内容会被后绘制的盖住。比如你在重叠的位置先画圆再画方</p> <p><a href="https://mp.weixin.qq.com/s?__biz=MzIzNDA3MDgwNA==&mid=2649230391&idx=1&sn=a6119a75727a6850a88b5a223d78118d&chksm=f0e75a4cc790d35a2f7f8a502b0e11c6a389a814d99736735e4e7c466fea035c4edba6f355e4&mpshare=1&scene=1&srcid=0814d6DERlck9LXZs7pzXsO1&pass_ticket=aBDt%2FVfcLlDJ1nmJosyecXJUspLbIYvmhRBoCCTvoN2i2YtI%2B92%2BdyuwEXZqZ7o8#rd" rel="nofollow,noindex">3.Android中ARSC二进制文件修改工具AXMLEditor解析</a></p> <p>通常我们在破解apk的时候,第一步肯定先反编译程序文件,然后开始修改代码和资源文件,最后回编译签名即可。但是现在有些apk做了一定策略,或者apk包如果很大都会导致回编译失败,而回编译如果失败,对于修改就没意义了。</p> <p><a href="https://mp.weixin.qq.com/s?__biz=MzA3ODg4MDk0Ng==&mid=2651113503&idx=1&sn=dd7aab094f8d799be9166929a3875ade&chksm=844c61c2b33be8d459ec79e0444f8577e4c3d6dc7790d91f15c7d8a994402c2373a802403a61&mpshare=1&scene=1&srcid=0814W1ZrCX5848EAMYUVLFDv&pass_ticket=aBDt%2FVfcLlDJ1nmJosyecXJUspLbIYvmhRBoCCTvoN2i2YtI%2B92%2BdyuwEXZqZ7o8#rd" rel="nofollow,noindex">4.安卓 MVVM 之禅</a></p> <p>我之前在多个 Android 应用中采用过多种途径来实现 MVP 设计模式,并且过程中经历了反复迭代。在历经多个项目后,我决定尝试以 Android Data Binding 类库为基础来实现 MVVM。这次尝试仿佛让我陷入了 Android 编程的极乐世界一般。</p> <p><a href="https://mp.weixin.qq.com/s?__biz=MzI3OTU0MzI4MQ==&mid=100000851&idx=1&sn=00f1ac2039813d99006ace3f8d3c0852&chksm=6b4768cd5c30e1db32892756ed454b83faaec9bf66a357bf10d919b260bf807578cb78085264#rd" rel="nofollow,noindex">5.Android7.0增量更新完整方案及踩坑之旅</a></p> <p>增量更新可以帮助我们减少用户更新apk所耗费的流量。具体的做法是,在老版本apk和新版本apk中,差分出这两个apk文件之间,不同的部分,得到一个patch(补丁)文件。比如我们之前的apk是10M,新的apk是12M,一般情况下,差分出来的补丁文件的大小在2M左右。</p> <p><a href="/misc/goto?guid=4959751447031045404" rel="nofollow,noindex">6.编写高质量代码的思考</a></p> <p>最近在看《代码大全》,可以说是一本软件开发的百科全书,特别厚,但是干货也很多。平时写代码,代码规范是一个最低的要求(很多老代码连最低要求都达不到),为什么要这样规定代码要这么写,而不是那么写?</p> <p><a href="/misc/goto?guid=4959751447128085501" rel="nofollow,noindex">7.微信 Mars Android Sample 源码分析</a></p> <p>整个 Sample 提供了以下功能: 基于TCP长连接的聊天室体验。 数据通信成功率、耗时、流量的展示。 网络状况检测结果展示。 一、本地运行 Server 端 具体如何运行 Server 端,参照官方wiki:Mars Sample 使用说明 二、修改 Android Sample 下面说下Android 端该如何修改源码连接到本地服务器</p> <p><a href="/misc/goto?guid=4959751447211296191" rel="nofollow,noindex">8. Kotlin应用于项目踩过的坑</a></p> <p>在谷歌宣布Kotlin成为一级开发语言的时候就开始学习kotlin,现在已经在项目中开发使用了。我目前负责的项目老代码全是Java,我不可能全转成kotlin,所以即便使用了kotlin,也只是在新建文件的代码里使用,老代码继续用java。kotlin的好处就是完全兼容java,java调用kotlin,kotlin基本上无阻碍。官网的话就是java和kotlin 100%兼容。</p> <p><a href="/misc/goto?guid=4959751447294221056" rel="nofollow,noindex">9.OkHttp 封装学不好,是漏了哪些基础知识?</a></p> <p>在讲 OkHttp 封装之前,我想整理下基础知识,一直对网络编程没有系统学习过,借着这大好时机,想认真学习下 OkHttp 的请求与响应,OkHttp 基本使用以及前后端交互,Okhttp 封装等,一看就有好多要学啊,是的,真的很多,不过没关系,整理起来就对 Okhttp 有了更加系统的认识,这是我想要的效果。</p> <p><a href="/misc/goto?guid=4959751447378829154" rel="nofollow,noindex">10.Easy Clean architecture on Android</a></p> <p>在我这几年的学习和成长中,深刻的意识到搭建一个Android应用架构是件非常痛苦的事,它不仅要满足不断增长的业务需求,还要保证架构自身的整洁,这让事情变得非常具有挑战,但我们必须这样做</p> <p><a href="/misc/goto?guid=4959751447460509598" rel="nofollow,noindex">11.Android OpenGL开发实践 - GLSurfaceView对摄像头数据的再处理</a></p> <p>随着移动网络的快速发展,移动端网络速度慢和花费较高的瓶颈逐渐消失,直播和视频随着网络的发展快速兴起。在直播和视频和风口之下,如何获取移动端摄像头数据、如何对摄像头数据进行再处理以及如何保存处理后的数据成为移动端视频开发者的必修课。</p> <p><a href="/misc/goto?guid=4959751447542761694" rel="nofollow,noindex">12.一种粗暴快速的Android全屏幕适配方案</a></p> <p>由于Android碎片化严重,屏幕适配一直是开发中较为头疼的问题。面对市面上五花八门的屏幕大小与分辨率,Android基于dp与res目录名称来适配的方案已无法满足一次编写全屏幕适配的需求.</p> <p><a href="https://mp.weixin.qq.com/s?__biz=MzAwODY4OTk2Mg==&mid=2652044407&idx=1&sn=c11f5104f2f9ab3fe30c6edac3b9fbab&chksm=808d5c32b7fad52478a23715983be6f53f8c562d9a1ae8db04a8ca79d0c9054703277c2bc869&mpshare=1&scene=1&srcid=0814K3Yz4eHfsJxZT3bAdu79&pass_ticket=aBDt%2FVfcLlDJ1nmJosyecXJUspLbIYvmhRBoCCTvoN2i2YtI%2B92%2BdyuwEXZqZ7o8#rd" rel="nofollow,noindex">13.Android O中的Seccomp过滤器</a></p> <p>在运行 Android 的设备中,强制执行 Android 安全模型的重任交给内核处理。由于安全团队已加固 Android 用户空间,隔离进程并削弱进程的权限,因此,越来越多的安全攻击将其焦点转到内核上。系统调用是攻击者攻击内核的常用方式之一。</p> <h2><strong>类库</strong></h2> <p><a href="/misc/goto?guid=4959751447725395793" rel="nofollow,noindex">1.VasSonic</a></p> <p>腾讯开源一款快速启动首屏websites的框架</p> <p><a href="/misc/goto?guid=4959717426448125142" rel="nofollow,noindex">2.AndPermission</a></p> <p>android运行时权限,支持在任何地方申请权限</p> <p><a href="/misc/goto?guid=4959751447833815135" rel="nofollow,noindex">3.android-clean-architecture-boilerplate</a></p> <p>一个使用clean architecture 的工程APP</p> <p><a href="/misc/goto?guid=4959751447915436721" rel="nofollow,noindex">4.AutoFlowLayout</a></p> <p>自定义ViewGroup,实现多功能流式布局与网格布局</p> <p><a href="/misc/goto?guid=4959751448003840206" rel="nofollow,noindex">5.emptyview</a></p> <p>一个集成loading, error, empty 状态的View</p> <p><a href="/misc/goto?guid=4959751448083819698" rel="nofollow,noindex">6.Morphing-Material-Dialogs</a></p> <p>Material dialog meets morphing animation</p> <p><a href="/misc/goto?guid=4959751448163633367" rel="nofollow,noindex">7.EasyPopup</a></p> <p>对 PopupWindow 的封装。可指定相对于 anchor view 各个方位弹出,设置背景变暗,指定 ViewGroup 背景变暗等特性。</p> <p><a href="/misc/goto?guid=4959751448252541380" rel="nofollow,noindex">8.QBox</a></p> <p>小秋魔盒(QBox)是一个生活工具 App</p> <p><a href="/misc/goto?guid=4959751448336671296" rel="nofollow,noindex">9.ArcSeekBar</a></p> <p>Curved Android SeekBar</p> <p><a href="/misc/goto?guid=4959751448420056299" rel="nofollow,noindex">10.PlayPauseView</a></p> <p>PlayPauseView 让播放、暂停按钮优雅的过渡</p> <p><a href="/misc/goto?guid=4959751448503599849" rel="nofollow,noindex">11.mask-edittext</a></p> <p>一个格式自动识别的库</p> <p><a href="/misc/goto?guid=4959751448584333514" rel="nofollow,noindex">12.Android-Architecture</a></p> <p>该项目结合 MVP 与 Clean 架构思想,探索在 Android 项目上的最佳实践</p> <p><a href="/misc/goto?guid=4959751448674633481" rel="nofollow,noindex">13.MaterialStepperView</a></p> <p>一个 Material Design 的步骤Steppers 控件</p> <h2><strong>参考视频</strong></h2> <p><a href="/misc/goto?guid=4959751448766851662" rel="nofollow,noindex">1.吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程</a></p> <p>8 月 8 日,吴恩达正式发布了 Deepleanring.ai——基于 Coursera 的系列深度学习课程,希望将人工智能时代的基础知识传播到更多人身边。一周过去后,许多人已经学完了目前开放的前三门课程。这些新课适合哪些人,它是否能和经典的《机器学习》课程相比呢?让我们先看看这篇先行体验。</p> <p><a href="https://mp.weixin.qq.com/s?__biz=MzAwODY4OTk2Mg==&mid=2652044413&idx=1&sn=513a47d845ba5cd3cefcea764a27e0ca&chksm=808d5c38b7fad52effec9fd31481db542c2364f1284b89bd5b4e4e782707c64d11d5e98055d2&scene=0&pass_ticket=aBDt%2FVfcLlDJ1nmJosyecXJUspLbIYvmhRBoCCTvoN2i2YtI%2B92%2BdyuwEXZqZ7o8#rd" rel="nofollow,noindex">2.Google最新开发者新闻快报</a></p> <p>Google最新开发者新闻快报</p> <h2><strong>面试题</strong></h2> <p><a href="https://mp.weixin.qq.com/s?__biz=MzAxMTEyOTQ5OQ==&mid=2650610925&idx=1&sn=571d5ab7696f550caf797d5b94a75b01&chksm=834c7b19b43bf20f64c0fe560c8d37e37d9ee35fc9dc3cba070d099cef85729131919ca04033#rd" rel="nofollow,noindex">1.招聘面试的套路与原则</a></p> <p>进入八月,开启了夏季的社招季。近期集中的招聘、面试,形成了一些心得体会,或者说叫套路,而隐藏在这些套路背后的其实是一些更通用的原则。所以,这一篇其实是写给招聘者的,不过,所有的应聘者也有可能有成为招聘者的一天,也可以参考。</p> <h2><strong>博外话</strong></h2> <p><a href="/misc/goto?guid=4959751449015643119" rel="nofollow,noindex">1.机会主义重构-Martin Fowler</a></p> <p>从我开始谈论和撰写关于重构专题的一开始,人们就问我如何将重构纳入更广泛的软件开发过程。 重构到底应不应该被当做软件开发生命周期的一个阶段,如果应该,那么要在一个迭代中给重构这个阶段分配多大比例呢?</p> <p><a href="/misc/goto?guid=4959751449101512471" rel="nofollow,noindex">2.如何阅读计算机科学类的书</a></p> <p>作为一个研发工程师,无论你是否喜爱阅读,相信你都一定读过不少关于计算机技术的书籍。这其中不乏《21天学会JAVA》这样的语言入门书籍,也有《算法导论》这样的专题书籍,也有《人月神话》这样关于软件管理学的实用性的书籍。</p> <p> </p> <p>来自:http://www.androidblog.cn/index.php/Index/detail/id/82</p> <p> </p>