Android开发技术周报 Issue#115

gjri6138 8年前
   <h3>新闻</h3>    <ol>     <li> <p><a href="/misc/goto?guid=4959736128549118631" rel="nofollow,noindex">谷歌 I/O 2017 开发者大会将于 5 月 17-19 日在山景城举办</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736128632614453" rel="nofollow,noindex">Android Wear 2.0 和新款智能手表有望在2月8号发布</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736128716271414" rel="nofollow,noindex">首批网页应用登陆Android系统</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736128791737889" rel="nofollow,noindex">谷歌两轮人形机器人曝光:一跳跨越障碍物</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736128871844826" rel="nofollow,noindex">Google改变独占决定:Pixel的指纹通知手势登陆Nexus 5X</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736128956929667" rel="nofollow,noindex">Android Wear 2.0最后一个开发者预览版发布</a></p> </li>     <li> <p><a href="/misc/goto?guid=4958998531705866464" rel="nofollow,noindex">谷歌:所有新款Chromebook都将支持Android应用</a></p> </li>     <li> <p><a href="/misc/goto?guid=4958998536746949583" rel="nofollow,noindex">[视频]Google 开始对 Android Instant 应用进行“有限测试”</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736129198593200" rel="nofollow,noindex">Google 收购 Fabric 开发者平台:收录了来自 推ter 的团队</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736129282998531" rel="nofollow,noindex">Google测试Instant Tethering功能:优化热点设置保持设备在线</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736129357564346" rel="nofollow,noindex">Google Pixel / Pixel XL 持续缺货:下单普遍要等到 2-3 月份</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736129448442780" rel="nofollow,noindex">Android One项目将会在近期扩展至美国市场</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736129528138870" rel="nofollow,noindex">Android端Google应用优化:离线模式可保持搜索条目</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736129609301424" rel="nofollow,noindex">Android 之父将打造新智能手机:深度集成AI</a></p> </li>    </ol>    <h3>教程</h3>    <ol>     <li> <p><a href="/misc/goto?guid=4959736129692659067" rel="nofollow,noindex">Android硬件加速原理与实现简介</a></p> <p>在手机客户端尤其是Android应用的开发过程中,我们经常会接触到“硬件加速”这个词。由于操作系统对底层软硬件封装非常完善,上层软件开发者往往对硬件加速的底层原理了解很少,也不清楚了解底层原理的意义,因此常会有一些误解,如硬件加速是不是通过特殊算法实现页面渲染加速,或是通过硬件提高CPU/GPU运算速率实现渲染加速。</p> </li>     <li> <p><a href="/misc/goto?guid=4959736129774676604" rel="nofollow,noindex">聊聊clean code</a></p> <p>clean code,顾名思义就是整洁的代码,或者说清晰、漂亮的代码,相信大多数工程师都希望自己能写出这样的代码。也许这是个千人千面的话题,每个工程师都有自己的理解。比如我,从一个天天被骂代码写得烂的人,逐渐学习成长,到现在也能写的出“人模人样”的代码来了。这期间算是积累了一点经验心得,想和大家分享,抛砖引玉。本文主要针对面向对象编程的clean code来阐述,面向过程代码的思路会比较不同,不在本文的讨论范畴。</p> </li>     <li> <p><a href="/misc/goto?guid=4959736129858663132" rel="nofollow,noindex">Android 内存泄漏分析心得</a></p> <p>对于C++来说,内存泄漏就是new出来的对象没有delete,俗称野指针;对于Java来说,就是new出来的Object 放在Heap上无法被GC回收;本文通过QQ和Qzone中内存泄漏实例来讲android中内存泄漏分析解法和编写代码应注意的事项。</p> </li>     <li> <p><a href="/misc/goto?guid=4959736129935204843" rel="nofollow,noindex">一起脱去小程序的外套和内衣 - 微信小程序架构解析</a></p> <p>微信小程序的公测掀起了学习小程序开发的浪潮,天生跨平台,即用即走、媲美原生体验、完善的文档、高效的开发框架,小程序给开发者带来了很多惊喜。通过这篇文章和大家一起分析小程序的架构,分享开发经验。</p> </li>     <li> <p><a href="/misc/goto?guid=4959736130015111435" rel="nofollow,noindex">Android动态库压缩壳的实现</a></p> <p>说起壳可能有的同学并不太了解,简单的说,计算机软件领域所说的壳实际上是一种软件加密技术。与自然界中的壳类似,花生用壳保护种子,乌龟用壳保护自己的身体,而我们写的程序为了在一定程度上防止被逆向分析,也可以给它加壳。壳主要分为两大类:加密壳和压缩壳,加密壳侧重于防止软件被篡改,而压缩壳则侧重于减小软件体积。其实,在Windows上已经有许多壳了,但Android(或者可以说Linux)上的壳相对而言就少了一些。本文就主要讲讲Android动态库(so文件)压缩壳要如何实现。</p> </li>     <li> <p><a href="/misc/goto?guid=4959736130087815305" rel="nofollow,noindex">Espresso浅析和使用</a></p> <p>Espresso是一个Google官方提供的Android应用UI自动化测试框架。Google希望,当Android的开发者利用Espresso写完测试用例后,能一边看着测试用例自动执行,一边享受一杯香醇Espresso(浓咖啡)。Espress有3个特点:1.第一个收录在Android Testing Supporting Library底下的测试框架; 2.模拟用户的操作;3.自动等待,直到UI线程Idle,才会执行测试代码。接下来,将从配置、写用例、运行一步步介绍Espresso的使用。</p> </li>     <li> <p><a href="/misc/goto?guid=4959736130178111470" rel="nofollow,noindex">通过ContentProvider多进程共享SharedPreferences数据</a></p> <p>开发一个多进程应用的时候,我们往往无法避免在多个进程之间共享数据。 多进程共享数据的方法有很多种,在Android中常用的有:SharedPreferences(多进程模式)、广播、Socket、ContentProvider、Messenger、AIDL等。这些方法适用于不同的使用场景,又有各自的局限性。本文即将介绍的是通过ContentProvider,结合SharedPreferences(以下简称SP)实现的进程间共享设置项的功能。这种方式主要适用于以下场景:在一个进程中进行一些设置,而需要在另一个进程实时读取设置,并根据这些设置来执行功能。</p> </li>     <li> <p><a href="/misc/goto?guid=4959736130250153358" rel="nofollow,noindex">看AspectJ在Android中的强势插入</a></p> <p>AOP是Aspect Oriented Programming的缩写,即『面向切面编程』。它和我们平时接触到的OOP都是编程的不同思想,OOP,即『面向对象编程』,它提倡的是将功能模块化,对象化,而AOP的思想,则不太一样,它提倡的是针对同一类问题的统一处理,当然,我们在实际编程过程中,不可能单纯的安装AOP或者OOP的思想来编程,很多时候,可能会混合多种编程思想,大家也不必要纠结该使用哪种思想,取百家之长,才是正道。</p> </li>     <li> <p><a href="/misc/goto?guid=4959736130336382296" rel="nofollow,noindex">微信小程序之自动化亲密接触</a></p> <p>山雨欲来风满楼,最近微信小程序相关开发文章吹遍大江南北,亦有摧枯拉朽万象更新之势。问小程序形为何物,直教IT众生怡情悦性高潮迭起。作为一名有着远大理想“包袱”与互联网变革 “使命感”的测试工程师,我再也按耐不住内心中的渴望与好奇,代表测试行业各大门派肩负起了迎接时代变革的挑战。话说经历了围观查看、溜边打探等种种过程,终于在隔壁老王那里弄到了测试体验资格,开始了一场对小程序的自动化亲密接触。</p> </li>    </ol>    <h3>开源库 & App</h3>    <ol>     <li> <p><a href="/misc/goto?guid=4959736130413314163" rel="nofollow,noindex">Boxing</a></p> <p>基于MVP模式的Android多媒体选择器</p> </li>     <li> <p><a href="/misc/goto?guid=4959735951555529320" rel="nofollow,noindex">SimpleRecyclerView</a></p> <p>A RecyclerView extension for building list more easily</p> </li>     <li> <p><a href="/misc/goto?guid=4959736130515577216" rel="nofollow,noindex">ktor</a></p> <p>Web backend framework for Kotlin</p> </li>     <li> <p><a href="/misc/goto?guid=4959736130623049733" rel="nofollow,noindex">CoordinatorTabLayout</a></p> <p>TabLayout和CoordinatorLayout相结合的折叠控件</p> </li>     <li> <p><a href="/misc/goto?guid=4959736130691285398" rel="nofollow,noindex">RecyclerStickyHeaderView</a></p> <p>Sticky header view or suspending view for RecyclerView.</p> </li>     <li> <p><a href="/misc/goto?guid=4959736130781967860" rel="nofollow,noindex">android-state</a></p> <p>A utility library for Android to save objects in a Bundle without any boilerplate.</p> </li>     <li> <p><a href="/misc/goto?guid=4959736130854239244" rel="nofollow,noindex">emoji-java</a></p> <p>The missing emoji library for Java</p> </li>     <li> <p><a href="/misc/goto?guid=4959736130939634993" rel="nofollow,noindex">android-mvp-architecture</a></p> <p>This repository contains a detailed sample app that implements MVP architecture using Dagger2, GreenDao, RxJava2, FastAndroidNetworking and PlaceholderView</p> </li>     <li> <p><a href="/misc/goto?guid=4959736131013549476" rel="nofollow,noindex">PlanningPoker</a></p> <p>Fast and simple Planning Poker Android app. Designed for phones, tablets and Android Wear devices.</p> </li>     <li> <p><a href="/misc/goto?guid=4959736131100642590" rel="nofollow,noindex">Dali</a></p> <p>Dali is an image blur library for Android. It contains several modules for static blurring, live blurring and animations.</p> </li>     <li> <p><a href="/misc/goto?guid=4959736028168964770" rel="nofollow,noindex">lottie-android</a></p> <p>Render After Effects animations natively on Android and iOS</p> </li>     <li> <p><a href="/misc/goto?guid=4959736131209518445" rel="nofollow,noindex">Louvre</a></p> <p>A small customizable library useful to handle an gallery image pick action built-in your app.</p> </li>     <li> <p><a href="/misc/goto?guid=4959736131294234150" rel="nofollow,noindex">Lemniscate</a></p> <p>An easy way to make your progress view nice and sleek.</p> </li>     <li> <p><a href="/misc/goto?guid=4959736131366652028" rel="nofollow,noindex">AwesomeBar</a></p> <p>Just beautiful</p> </li>     <li> <p><a href="/misc/goto?guid=4959735748263306375" rel="nofollow,noindex">PreviewSeekBar</a></p> <p>A SeekBar suited for showing a preview of something. As seen in Google Play Movies.</p> </li>     <li> <p><a href="/misc/goto?guid=4959736131473018606" rel="nofollow,noindex">proteus</a></p> <p>Proteus : JSON LayoutInflater with Data Bindings</p> </li>     <li> <p><a href="/misc/goto?guid=4959736131561441085" rel="nofollow,noindex">SpanEZ</a></p> <p>Wrapper on top of Spans so that you can add them to your strings with no problem</p> </li>     <li> <p><a href="/misc/goto?guid=4959736131645009169" rel="nofollow,noindex">Ristretto</a></p> <p>A short shot of Espresso</p> </li>     <li> <p><a href="/misc/goto?guid=4959736131716864599" rel="nofollow,noindex">excelPanel</a></p> <p>A two-dimensional RecyclerView,it can load historical data,it also can load more data。</p> </li>     <li> <p><a href="/misc/goto?guid=4959736131805950012" rel="nofollow,noindex">SopCastComponent</a></p> <p>来疯直播安卓控件,支持flv,支持rtmp,支持添加视频特效等等</p> </li>     <li> <p><a href="/misc/goto?guid=4959736131879692363" rel="nofollow,noindex">Aligned</a></p> <p>A tiny library for Android that makes putting text on baseline infinitely easier</p> </li>     <li> <p><a href="/misc/goto?guid=4959736131959480205" rel="nofollow,noindex">Wiggle</a></p> <p>A library for delayed scrolling</p> </li>     <li> <p><a href="/misc/goto?guid=4959736132039764898" rel="nofollow,noindex">sklad</a></p> <p>Android file storage library with encryption and streaming support</p> </li>     <li> <p><a href="/misc/goto?guid=4959734831007543575" rel="nofollow,noindex">desertplaceholder</a></p> <p>Animated placeholder in desert style.</p> </li>     <li> <p><a href="/misc/goto?guid=4959736132157865339" rel="nofollow,noindex">CameraFragment</a></p> <p>A simple easy-to-integrate Camera Fragment for Android</p> </li>     <li> <p><a href="/misc/goto?guid=4959734831096551239" rel="nofollow,noindex">Android-SwitchIcon</a></p> <p>Google launcher-style implementation of switch (enable/disable) icon</p> </li>     <li> <p><a href="/misc/goto?guid=4959736132267261007" rel="nofollow,noindex">GoogleMapsAnimations</a></p> <p>"GoogleMapsAnimations is an awesome android library to show radar and multiple types of circular ripple effects on google map.</p> </li>    </ol>    <h3>工具</h3>    <ol>     <li> <p><a href="/misc/goto?guid=4959735748636679741" rel="nofollow,noindex">gradle-completion</a></p> <p>Gradle tab completion for bash and zsh</p> </li>     <li> <p>XTest</p> <p>自动化测试工具,专业、易学、稳定高效、多机联测,为APP自动化测试量身打造</p> </li>    </ol>    <h3>书</h3>    <ol>     <li><a href="/misc/goto?guid=4959736132371678794" rel="nofollow,noindex">front-end-handbook-2017</a></li>    </ol>    <h3>职位内推</h3>    <ol>     <li> <p>Android/iOS 开发工程师</p> <p>上海徐汇 / 薪资面议 / 年后入职时间宽松 / 团队氛围好 / 加班少 简历发送至:jinkai@qiyi.com (记得注明在『Android 开发技术周报』看到的)</p> </li>    </ol>    <h3>设计</h3>    <ol>     <li> <p><a href="/misc/goto?guid=4959736132451747186" rel="nofollow,noindex">确定按钮该放在左边还是右边?</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736132530768317" rel="nofollow,noindex">无框界面</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736132617534651" rel="nofollow,noindex">如何在介面中設計排版(需要梯子)</a></p> </li>    </ol>    <p>设计素材</p>    <ol>     <li> <p><a href="/misc/goto?guid=4959736132696561525" rel="nofollow,noindex">Flowchart Kit for Sketch</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736132784265868" rel="nofollow,noindex">Covalent Material Design Sketch Template</a></p> </li>    </ol>    <h3>技术之外</h3>    <ol>     <li> <p><a href="/misc/goto?guid=4959736132867147938" rel="nofollow,noindex">探索外包开发的极限 • 一个精品App诞生的全过程(上)</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959736132951323079" rel="nofollow,noindex">探索外包开发的极限 • 一个精品App诞生的全过程(下)</a></p> </li>    </ol>    <h3>好玩的</h3>    <ol>     <li><a href="/misc/goto?guid=4959736133034338717" rel="nofollow,noindex">git commit emoji 使用指南</a></li>    </ol>    <h3> </h3>    <p> </p>    <p>来自:http://www.androidweekly.cn/android-dev-weekly-issue-115/</p>    <p> </p>