Android开发技术周报 Issue#103

小石头 8年前
   <p style="text-align: center;"><img src="https://simg.open-open.com/show/b1e08b6ac0fad3f98df54c080f96d6d2.jpg"></p>    <h3><strong>新闻</strong></h3>    <ol>     <li> <p><a href="/misc/goto?guid=4959722918094283725" rel="nofollow,noindex">Google承认Pixel相机存在镜头光晕问题 将通过更新解决</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959722918193301508" rel="nofollow,noindex">谷歌与维萨和万事达卡达成合作以拓展Android Pay服务</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959722918276928730" rel="nofollow,noindex">[图]5年旧机型Galaxy Nexus也吃上Android 7.1 Nougat</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959722918357581527" rel="nofollow,noindex">所有Android设备都受影响:Dirty COW漏洞可获root权限</a></p> </li>     <li> <p><a href="/misc/goto?guid=4959722918465080211" rel="nofollow,noindex">谷歌Messenger应用更新:更简洁的界面和全新圆形图标</a></p> </li>    </ol>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/bf4555d84e784819a58d7ec57ac2ffec.jpg"></p>    <h3><strong>教程</strong></h3>    <ol>     <li> <p><a href="/misc/goto?guid=4959722918545606425" rel="nofollow,noindex">理解Binder线程池的管理</a></p> <p>Android系统启动完成后,ActivityManager, PackageManager等各大服务都运行在 system <em>server 进程,app应用需要使用系统服务都是通过binder来完成进程之间的通信,上篇文章彻底理解Android Binder通信架构,从整体架构以及通信协议的角度来阐述了Binder架构。那对于binder线程是如何管理的呢,又是如何创建的呢?其实无论是 system</em> server 进程,还是app进程,都是在进程fork完成后,便会在新进程中执行onZygoteInit()的过程中,启动binder线程池。接下来,就以此为起点展开从线程的视角来看看binder的世界。</p> </li>     <li> <p><a href="/misc/goto?guid=4959722918633036006" rel="nofollow,noindex">Android Studio 2.2 Native 开发新特性</a></p> <p>Android Studio Native 开发新特性扫描:1提供对 CMake(官方默认)、ndk-build 两种构建方式的支持。原来的 Experimental Gradle Plugin 构建方式仍然可用,官方建议迁移。2.构建生成的 .so 文件将直接被 Gradle 打包在 apk 中。3.以 LLDB 为 Native 层的调试器,提供跨 Java 层和 Native 层的 Hybrid Debugger。4.开发环境提供对 Native 代码编辑的支持。5.对 Native 方法查找引用,可以看到 IDE 同时列出 Java 层和 Native 层的方法(函数)及其引用。6.新特性要求 Android Gradle Build Tools 版本必须为 2.2.0 及以上,且 Gradle 版本必须为 2.14.1 及以上。</p> </li>     <li> <p><a href="/misc/goto?guid=4959722918716931252" rel="nofollow,noindex">写给Android开发者的混淆使用手册</a></p> <p>毫无疑问,混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆。 首先,这里说的的混淆其实是包括了代码压缩、代码混淆以及资源压缩等的优化过程。依靠 ProGuard,混淆流程将主项目以及依赖库中未被使用的类、类成员、方法、属性移除,这有助于规避64K方法数的瓶颈;同时,将类、类成员、方法重命名为无意义的简短名称,增加了逆向工程的难度。而依靠 Gradle 的 Android 插件,我们将移除未被使用的资源,可以有效减小 apk 安装包大小。</p> </li>     <li> <p><a href="/misc/goto?guid=4959722918790033773" rel="nofollow,noindex">从0到1打造直播 App</a></p> <p>互联网内容载体变迁历程,文字——图片/声音——视频——VR/AR——…….。从直播1.0秀场时代(YY),2.0游戏直播(斗鱼、虎牙、熊猫)到如今全民直播3.0泛生活娱乐时代(映客、花椒),国外直播app(Meerkat 、Periscope),随着VA/AR/MR提出的沉浸式视听体验,直播4.0时代很快就能到来。在这个全民娱乐的时代,直播已经火得不要不要的,各大公司都有自己的直播产品。本文主要从直播的一些基本知识,一步步打造直播app。直播那么火的背后有什么样的技术支撑呢?</p> </li>     <li> <p>Android系统线控和歌曲信息屏显的那点事</p> <p>目前Android系统中主流的音乐播放器都支持线控的功能,线控设备包括有线耳机和蓝牙耳机或蓝牙车机,当不方便操作手机的时候可以通过线控来控制音乐的播放暂停以及切歌。同时当音乐播放的时候部分手机(如小米)会在系统的锁屏页面上展示各种歌曲信息,如歌曲名,歌手名,专辑图片甚至歌词,同时还可以提供一些播放控制的操作。这些都是如何实现的呢?其中是否有坑?下面慢慢道来。在Android 5.0之前的版本中,Android推荐使用AudioManager的一系列功能来实现线控和锁屏信息显示功能。</p> </li>     <li> <p><a href="/misc/goto?guid=4959722918876505419" rel="nofollow,noindex">Android卡慢监控组件简介</a></p> <p>Android卡慢监控组件,用于监控app在整个使用过程中出现的界面卡顿现象,尝试还原其中的调用堆栈信息,追踪代码来源;以堆栈信息的形式体现出来,附加了CPU使用率做参考;上报到统计平台,进行聚合排名</p> </li>    </ol>    <h3><strong>开源库&项目</strong></h3>    <ol>     <li> <p><a href="/misc/goto?guid=4959722918955613966" rel="nofollow,noindex">ChipsLayoutManager</a></p> <p>A custom layout manager for RecyclerView which mimicric TextView span behaviour, flow layouts behaviour with support of amazing recyclerView features</p> </li>     <li> <p><a href="/misc/goto?guid=4959722919037812121" rel="nofollow,noindex">Vertical-Intro</a></p> <p>Vertical intro allows you to integrate material vertical intro to your app</p> </li>     <li> <p><a href="/misc/goto?guid=4959722919122065992" rel="nofollow,noindex">android-TNRAnimationHelper</a></p> <p>This is a library that contains practical animations: Rotation, Flip, Horizontal and Vertical Shake,</p> </li>     <li> <p><a href="/misc/goto?guid=4959722919195381127" rel="nofollow,noindex">AndroidShortcuts</a></p> <p>Example app for shortcuts in design library v25</p> </li>     <li> <p><a href="/misc/goto?guid=4959722919284191755" rel="nofollow,noindex">FastScroll</a></p> <p>A ListView-like FastScroller for Android’s RecyclerView</p> </li>     <li> <p><a href="/misc/goto?guid=4959722919371357239" rel="nofollow,noindex">Elephant</a></p> <p>一款基于 RxJava+Retrofit+MVP+Material Design 开发的 PHPHub 第三方 Android 客户端</p> </li>    </ol>    <h3><strong>工具</strong></h3>    <ol>     <li> <p><a href="/misc/goto?guid=4959722919453692364" rel="nofollow,noindex">material-remixer</a></p> <p>A set of cross-platform libraries and protocols to allow the sharing of design values and live refinement of apps during the development process.</p> </li>    </ol>    <h3><strong>设计</strong></h3>    <ol>     <li> <p><a href="/misc/goto?guid=4959722919537785261" rel="nofollow,noindex">Origami Studio</a></p> <p>Explore, iterate, and test your ideas. A new tool for designing modern interfaces, built and used by designers at 非死book</p> </li>     <li> <p><a href="/misc/goto?guid=4959722919619450475" rel="nofollow,noindex">MakeIconsWithSketch</a></p> <p>一个开源的用 Sketch 绘制图标的教程</p> </li>    </ol>    <h3> </h3>    <p> </p>    <p>来自:http://www.androidweekly.cn/android-dev-weekly-issue-103/</p>    <p> </p>