├── 周报模板.md ├── README.md ├── Android开发技术周报 Issue#28.md ├── Android开发技术周报 Issue#14.md ├── Android开发技术周报 Issue#5.md ├── Android开发技术周报 Issue#6.md ├── Android开发技术周报 Issue#8.md ├── Android开发技术周报 Issue#11.md ├── Android开发技术周报 Issue#13.md ├── Android开发技术周报 Issue#17.md ├── Android开发技术周报 Issue#12.md ├── Android开发技术周报 Issue#9.md ├── Android开发技术周报 Issue#10.md ├── Android开发技术周报 Issue#1.md ├── Android开发技术周报 Issue#25.md ├── Android开发技术周报 Issue#27.md ├── Android开发技术周报 Issue#16.md ├── Android开发技术周报 Issue#7.md ├── Android开发技术周报 Issue#21.md ├── Android开发技术周报 Issue#20.md ├── Android开发技术周报 Issue#19.md ├── Android开发技术周报 Issue#23.md ├── Android开发技术周报 Issue#4.md ├── Android开发技术周报 Issue#15.md ├── Android开发技术周报 Issue#3.md ├── Android开发技术周报 Issue#26.md ├── Android开发技术周报 Issue#22.md ├── Android开发技术周报 Issue#18.md ├── Android开发技术周报 Issue#24.md ├── Android开发技术周报 Issue#2.md └── LICENSE /周报模板.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#1 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. []() 7 | 8 | ## Android开发 9 | #### 1. []() 10 | 11 | ## 专题栏目 - Kotlin 12 | #### 1. []() 13 | 14 | ## 开源库&项目&工具 15 | #### 1. []() 16 | 17 | ## 联系方式 18 | * Email:yanghui1986527#gmail.com 19 | * Github: https://github.com/snowdream 20 | * Blog: http://snowdream.github.io/blog/ 21 | * 简书:http://www.jianshu.com/u/748f0f7e6432 22 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 23 | * QQ群: 529327615 24 | * 微信公众号: sn0wdr1am 25 | 26 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AndroidWeekly 2 | Android开发技术周报 3 | 4 | 5 | ## Contacts 6 | * Email:yanghui1986527#gmail.com 7 | * Github: https://github.com/snowdream 8 | * Blog: http://snowdream.github.io/blog/ 9 | * 简书:http://www.jianshu.com/u/748f0f7e6432 10 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 11 | * QQ群: 529327615 12 | * 微信公众号: sn0wdr1am 13 | 14 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 15 | 16 | ## License 17 | ``` 18 | Copyright (C) 2017 snowdream 19 | 20 | Licensed under the Apache License, Version 2.0 (the "License"); 21 | you may not use this file except in compliance with the License. 22 | You may obtain a copy of the License at 23 | 24 | http://www.apache.org/licenses/LICENSE-2.0 25 | 26 | Unless required by applicable law or agreed to in writing, software 27 | distributed under the License is distributed on an "AS IS" BASIS, 28 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 29 | See the License for the specific language governing permissions and 30 | limitations under the License. 31 | ``` 32 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#28.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#28 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [腾讯优图开源神经网络框架 ncnn ,主打移动端](https://www.oschina.net/news/87057/tecent-opensource-ncnn) 7 | ncnn 是腾讯优图实验室首个开源项目,是一个为手机端极致优化的高性能神经网络前向计算框架,于今日正式开源。 8 | 9 | ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。 10 | ![腾讯优图开源神经网络框架](https://static.oschina.net/uploads/space/2017/0724/143205_fjWJ_2896879.png) 11 | 12 | ## Android开发 13 | #### 1. [动态图片技术 — 历史、格式与性能](http://t.cn/R9UBLqH) 14 | 本文主要介绍以下内容: 15 | * 动态图片的定义、发展历史与现状,动态图片相关的术语和概念 16 | * 动态图片各主要格式,及简要对比 17 | * 在 Android 平台对比 GIF 与 WebP 格式的各项性能参数,为技术选型提供参考 18 | 19 | #### 2. [什么?Android O 图标能自适应了?!](http://t.cn/R9UBNnr) 20 | Android O 引入了一种新的应用图标格式:自适应图标。自适应图标可以统一所有应用图标的形状,为用户展现有趣的视觉效果,从而使设备提供更为一致的体验。本文会向您解释它的工作原理,以及一些设计这种图标的技术。 21 | 22 | #### 3. [Android O 新特性和行为变更总结](http://t.cn/R9UdLXP) 23 | 前段时间解决了几个 QQ 音乐多窗口屏幕显示的 bug,虽然这个问题最终不是 Android O 版本的问题,多窗口是 Android 7.1 之后引入的,但是趁此机会了解一下 Android O 版本的新特性也不错。 24 | 25 | #### 4. [干货分享- FASTJSON那些事.pptx](http://t.cn/R9UdjVr) 26 | 干货分享- FASTJSON那些事.pptx,FASTJSON作者亲自总结。 27 | 28 | #### 5. [架构师是如何炼成的?以天猫APP架构&开发模式升级工程为例](http://t.cn/R9UgPUL) 29 | 在集团大数据、算法的背景下,猫客(天猫客户端)首页率先从2015年的坑位运营走向2016年的全面个性化,猫客首页个性化业务点多达50多处,个性化场景大部分通过通过Aladdin(天猫推荐)接入TPP(集团个性化平台)来实现的。走向个性化的同时也接入大量的第三方服务,例如:阿里妈妈钻展、新人礼包等。 30 | 31 | #### 6. [深度学习必备!解读腾讯优图首个开源项目ncnn](http://t.cn/R9UgtVA) 32 | ncnn (GitHub地址:https://github.com/Tencent/ncnn)是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 CPU 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。ncnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天P图等。 33 | 34 | ## 开源库&项目&工具 35 | #### 1. [Android开发中那些你必备的堪称黑科技的神器APP](http://t.cn/R9UeNYA) 36 | 上一篇文章写了反编译某应用获取所需代码,用到了许多神器,这篇文章就来一一铺开。 37 | 38 | #### 2. [MemoryMonitor](https://github.com/cundong/MemoryMonitor) 39 | 一个给开发者使用的Android App内存清理、监控工具。 40 | 41 | #### 3. [RippleView](https://github.com/siriscac/RippleView) 42 | View that imitates Ripple Effect on click which was introduced in Android L (for Android 2.3+) 43 | 44 | #### 4. [CameraView](https://github.com/CJT2325/CameraView) 45 | 仿微信拍照Android控件(轻触拍照,长按摄像) 46 | 47 | ## 联系方式 48 | * Email:yanghui1986527#gmail.com 49 | * Github: https://github.com/snowdream 50 | * Blog: http://snowdream.github.io/blog/ 51 | * 简书:http://www.jianshu.com/u/748f0f7e6432 52 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 53 | * QQ群: 529327615 54 | * 微信公众号: sn0wdr1am 55 | 56 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 57 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#14.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#14 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [Android Studio 2.4 Preview 6 发布](https://www.oschina.net/news/83949/android-studio-2-4-preview-6) 7 | Android Studio 2.4 Preview 6 于2017年4月13号发布了。Beta版本发布前还将发布Preview 7版本。 8 | 9 | ## Android开发 10 | #### 1. [Android O 中对设备标识符所做的变更](http://t.cn/RXXRMCL) 11 | Android O 引入若干改进,帮助用户控制标识符的使用。这些改进包括: 12 | * 限制使用不可重置的设备范围标识符 13 | * 更新 Android O WLAN 堆栈,更改 Pixel、Pixel XL 和 Nexus 5x 手机所使用的 WLAN 芯片组固件,以便在探测请求中随机分配 MAC 地址 14 | * 更新应用请求帐号信息的方式,提供更多面向用户的控制 15 | 16 | #### 2. [用两张图告诉你,为什么你的App会卡顿?](http://t.cn/RXXEwSv) 17 | 从这篇文章中你能获得这些料: 18 | * 知道setContentView()之后发生了什么? 19 | * 知道Android究竟是如何在屏幕上显示我们期望的画面的? 20 | * 对Android的视图架构有整体把握。 21 | * 学会从根源处分析画面卡顿的原因。 22 | * 掌握如何编写一个流畅的App的技巧。 23 | * 从源码中学习Android的细想。 24 | * 收获两张自制图,帮助你理解Android的视图架构。 25 | 26 | #### 3. [Android编译时,怎么自动生成代码?](http://www.jianshu.com/p/96ce81e68445) 27 | 今天的主要内容是,在IDE编译时,怎么去动态生成Java和class文件。 28 | 29 | #### 4. [从未如此惊艳!你好,SuperTextView](http://www.jianshu.com/p/1b91e11e441d) 30 | 欢迎使用SuperTextView,这篇文档将会向你展示如何使用这个控件来提高你构建项目的效率。 31 | 32 | ![SuperTextView](http://upload-images.jianshu.io/upload_images/1869462-ad8839d482446393.gif?imageMogr2/auto-orient/strip) 33 | 34 | #### 5. [Android ConstraintLayout使用指南](http://blog.coderclock.com/2017/04/09/android/android-constraintlayout/) 35 | ConstraintLayout翻译成中文也称为约束布局,类似于iOS中的布局约束。升级到Android Studio 2.3之后,IDE默认生成的Activity布局都是以ConstraintLayout做为根布局,作者体验了一把这个Google去年就开始力推的ConstraintLayout后,觉得非常不错,本文主要是记录ConstraintLayout各个方面的使用知识。 36 | 37 | #### 6. [Android插件化Hook技术之---Activity的启动过程拦截](http://t.cn/RXXRp2Q) 38 | 这篇文章主要讲解如何利用动态代理技术Hook掉系统的AMS服务,来实现拦截Activity的启动流程。代码量不是很多,为了更容易的理解,需要掌握JAVA的反射,动态代理技术,以及Activity的启动流程。 39 | 40 | ## 开源库&项目&工具 41 | #### 1. [TranslationPlugin V1.3.4 发布,JetBrains IDE/Android Studio插件](http://yiiguxing.github.io/TranslationPlugin/) 42 | JetBrains IDE/Android Studio 翻译插件 TranslationPlugin V1.3.4 发布了。更新内容: 43 | 44 | * 支持自定义字体,再也不怕小方块了 45 | 46 | * 使用公共API KEY时警告 47 | 48 | * "频繁请求"和"API KEY错误"提示添加跳转至设置页链接以方便设置API KEY 49 | 50 | * 优化历史记录 51 | 52 | * Bug修复 53 | 54 | ![TranslationPlugin](https://github.com/YiiGuxing/TranslationPlugin/raw/master/images/screenshots.gif) 55 | 56 | #### 2. [gifencoder](https://github.com/square/gifencoder) 57 | A pure Java library implementing the GIF89a specification. Suitable for use on Android. 58 | 59 | ## 联系方式 60 | * Email:yanghui1986527#gmail.com 61 | * Github: https://github.com/snowdream 62 | * Blog: http://snowdream.github.io/blog/ 63 | * 简书:http://www.jianshu.com/u/748f0f7e6432 64 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 65 | * QQ群: 529327615 66 | * 微信公众号: sn0wdr1am 67 | 68 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 69 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#5.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#5 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。 4 | 5 | ## 业界新闻 6 | #### 1. [Android Studio 2.3 Beta4 发布,向正式版冲刺](https://www.oschina.net/news/81795/android-studio-2-3-beta4) 7 | Android Studio 2.3 Beta 4 发布了。Android Studio 2.3 Beta 4 已经完成了第一级测试,一旦构建通过所有测试,会将其发布到 Beta 频道。 8 | 9 | #### 2. [Android SDK Tools 25.3.0 早期预览版发布](https://www.oschina.net/news/81780/android-sdk-tools-25-3-0-canary) 10 | 开发团队2月7日宣布 Android SDK Tools 25.3.0 版本已发布至 canary 渠道,开发者可以看到早期的一些更新和改变。 11 | 12 | #### 3. [Android Nougat 7.1.2 即将发布,公众测试版已开放](https://www.oschina.net/news/81861/android-nougat-7-1-2-public-beta) 13 | Google 2月12日在其开发者博客上发文表示,Android Nougat 的下一个维护版本 7.1.2 即将发布!为了让广大开发者有机会抢先尝鲜,现已开始向已注册 Android Beta 计划、符合条件的设备(包括 Pixel 和 Pixel XL、Nexus 5X、Nexus Player 和 Pixel C 设备)推出公众测试版本。同时,Nexus 6P 的更新也在准备中,预期很快就会发布此更新。 14 | 15 | #### 4. [2016 移动应用质量大数据报告](http://t.cn/RJYgV8a) 16 | 下面我们将为您带来2016年度 Android & iOS 移动应用质量大数据报告,让您清晰了解行业动态,精准定位自身产品位置。 17 | 18 | ## Android开发 19 | #### 1. [Android架构思考(模块化、多进程)](http://blog.spinytech.com/2016/12/28/android_modularization/) 20 | 关于模块化(组件化)这个问题,我想每个开发者可能都认真的思考过。随着项目的开发,业务不断壮大,业务模块越来越多,各个模块间相互引用,耦合越来越严重,同时有些项目(比如我们公司)还伴随着子应用单独包装推广,影子应用单独发布等等需求,重新调整架构迫在眉睫。今天,我们就来聊聊模块化(组件化),这篇文章同时也是我这几年,对项目架构的理解。 21 | 22 | #### 2. [安卓自定义View进阶-多点触控详解](http://www.gcssloop.com/customview/multi-touch) 23 | Android 多点触控详解,在前面的几篇文章中我们大致了解了 Android 中的事件处理流程和一些简单的处理方案,本次带大家了解 Android 多点触控相关的一些知识。多点触控 ( Multitouch,也称 Multi-touch ),即同时接受屏幕上多个点的人机交互操作,多点触控是从 Android 2.0 开始引入的功能,在 Android 2.2 时对这一部分进行了重新设计。 24 | 25 | #### 3. [Material Design中全新的动画](http://t.cn/RJYgn92) 26 | Material Design中的动画将为用户提供操作反馈并在用户与您的应用进行互动时提供视觉连续性。 Material Design将为按钮与操作行为转换提供一些默认动画,而 Android 5.0(API Level 21)及更高版本可让您定制这些动画,同时也可创建新动画。 27 | 28 | #### 4. [Android7.0 对于开发者来说的35条重要新功能](http://www.jianshu.com/p/29fb0e90c233) 29 | Android7.0 正式发布已有一段时间,并且已有数款机器支持,对用户和开发者都有重大功能的更新,当然,如果开发者充分利用这些新功能,用户自然而然的就能体验到Android7.0带来的新体验。 30 | 31 | #### 5. [RecyclerView Adapter 优雅封装,一个Adapter搞定所有列表](http://www.jianshu.com/p/727c18f4bf20) 32 | 项目中,我们用得最多的元素就是列表了,在Android 中,实现列表用原生的RecyclerView就能满足需求,关于RecyclerView 的基础使用这里不做过多的介绍,网上有太多的博文介绍了。本篇文章将介绍自己封装的一个Adapter,帮你快速高效的添加一个列表(包括单 Item 列表和多item列表)。 33 | 34 | ## 开源库&项目&工具 35 | #### 1. [LQRWeChat](https://github.com/GitLqr/LQRWeChat) 36 | 本项目高仿微信6.3.31,使用网易云信SDK 3.2.0版本完成主要的聊天功能(单聊、群聊)、好友关系管理、群组管理等功能。 37 | 38 | #### 2. [Intellij IDEA中安装&使用PlantUML画时序图、类图等](http://www.jianshu.com/p/a6bd7e3048ef) 39 | Intellij IDEA中安装&使用PlantUML画时序图、类图等 40 | 41 | #### 3. [ActivityStarter](https://github.com/MarcinMoskala/ActivityStarter) 42 | Android Library that provide simpler way to start the Activities with multiple arguments. 43 | 44 | #### 4. [Shortbread](https://github.com/MatthiasRobbers/shortbread) 45 | Android library that generates app shortcuts from Shortcut annotations 46 | 47 | #### 5. [Dachshund-Tab-Layout](https://github.com/Andy671/Dachshund-Tab-Layout) 48 | Extended Android Tab Layout with animated indicators that have continuous feedback. 49 | 50 | ## 联系方式 51 | * Email:yanghui1986527#gmail.com 52 | * QQ群: 529327615 53 | * 微信公众号: sn0wdr1am 54 | 55 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 56 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#6.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#6 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。 4 | 5 | ## 业界新闻 6 | #### 1. [Android Studio 2.3 RC 1 发布](https://www.oschina.net/news/82060/android-studio-23-rc1-is-now-available) 7 | Android Studio 2.3 RC 1 发布了,此版本包含一组小的重要错误修复。 8 | 9 | #### 2. [Google发布Android Things开发者第二预览版](http://www.cnbeta.com/articles/583739.htm) 10 | Google在2个月前发布了Android Things,该操作系统旨在为物联网设备提供“Android之力”的加持。今天,该公司又发布了第二个开发者预览版。新编译版本中包含了大量新特性,比如支持英特尔Edison和树莓派3硬件抽象层的USB音频(以及英特尔的 Joule 物联网开发板)。 11 | 12 | ## Android开发 13 | #### 1. [Android权限机制与适配经验](http://t.cn/RiwROkA) 14 | Android M已经发布一段时间了,市面上很多应用都已经适配Android M。权限机制,作为Android M的一大特性,受到了很多开发者的关注。本文主要分享了以下几个知识点的内容,1、Android权限机制关键知识点;2、QQ音乐对于权限的适配经验;3、近段时间以来遇到的一些Android权限方面的问题。OK,下面进入主题。 15 | 16 | #### 2. [深入剖析Android中的ArrayMap](http://droidyue.com/blog/2017/02/12/dive-into-arraymap-in-android) 17 | 数据集合在任何一门编程语言中都是很重要的一部分,在Android开发中,我们会实用到ArrayList,LinkedList,HashMap等。其中HashMap是用来处理键值对需求的常用集合。而Android中引入了一个新的集合,叫做ArrayMap,为键值对存储需求增加了一种选择。本文深度剖析了ArrayMap的实现原理。 18 | 19 | #### 3. [归纳AOP在Android开发中的几种常见用法](http://www.jianshu.com/p/2779e3bb1f14) 20 | 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的有力补充。玩好AOP对开发App是有很大的帮助的,本文详细介绍了AOP在Android开发中的常见用法。 21 | 22 | #### 4. [从json文件到炫酷动画-Lottie实现思路和源码分析](http://www.jianshu.com/p/81be1bf9600c) 23 | Lottie是最近Airbnb开源的动画项目,支持Android、iOS、ReactNaitve三个平台,相关背景介绍可以参考之前的文章Airbnb开源炫酷动画库Lottie(译)-看看Airbnb的工程师怎么说。本文分析主要Lottie把json文件转为动画的思路和源码实现。文章首先介绍Lottie的基本使用,然后分析把json文件映射到动画的实现思路,最后分析Lottie的源码实现,这里分析的是Lottie-Android。 24 | 25 | #### 5. [Android AOP之字节码插桩详解](http://mp.weixin.qq.com/s/SyFe2CgKW51ROAcFHd0a5Q) 26 | 本篇文章基于《网易乐得无埋点数据收集SDK》总结而成,关于网易乐得无埋点数据采集SDK的功能介绍以及技术总结后续会有文章进行阐述,本篇单讲SDK中用到的Android端AOP的实现。随着流量红利时代过去,精细化运营时代的开始,网易乐得开始构建自己的大数据平台。其中,客户端数据采集是第一步。传统收集数据的方式是埋点,这种方式依赖开发,采集时效慢,数据采集代码与业务代码不解藕。 27 | 28 | #### 6. [Android神奇“控件”-RemoteViews](http://blog.csdn.net/wrg_20100512/article/details/53940485) 29 | 先从表层意思理解RemoteViews感觉它是一个view的集合,而且和远程有关系。那事实上它是什么呢?从官方注释说明可以看出,RemoteViews是用来描述一个视图的,它描述的这个视图将显示在另外一个进程中,这也就符合了RemoteViews中Remote这层含义。同时说明里也说了RemoteViews提供了一些基本的操作方法来修改它描述的那个视图的内容。听起来它还真像是个“控件”,那它真的是吗? 30 | 31 | #### 7. [移动开发需要知道的像素知识『多图』](http://t.cn/RiwR11r) 32 | 像素(Pixel)对于WEB开发者来说很是熟悉,在PC互联网时代没少与其打交道。进入移动互联网之后,随着移动设备屏幕的解析度越来越高,衍生了一些关于屏幕和像素的一些新概念,比如DPI,DP,PT,Retina,4K等等,本文对这些概念做一个简单的介绍。 33 | 34 | ## 开源库&项目&工具 35 | #### 1. [MagicCamera](https://github.com/wuhaoyu1990/MagicCamera) 36 | Real-time Filter Camera&VideoRecorder And ImageEditor With Face Beauty For Android---包含美颜等40余种实时滤镜相机,可拍照、录像、图片修改 37 | 38 | #### 2. [Alerter](https://github.com/Tapadoo/Alerter) 39 | This library aims to overcome the limitations of Toasts and Snackbars, while reducing the complexity of your layouts. 40 | 41 | #### 3. [mkloader](https://github.com/nntuyen/mkloader) 42 | Beautiful and smooth custom loading views 43 | 44 | #### 4. [MD360Player4Android](https://github.com/ashqal/MD360Player4Android) 45 | It is a lite library to render 360 degree panorama video for Android. 46 | 47 | ## 联系方式 48 | * Email:yanghui1986527#gmail.com 49 | * QQ群: 529327615 50 | * 微信公众号: sn0wdr1am 51 | 52 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 53 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#8.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#8 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。 4 | 5 | ## 业界新闻 6 | #### 1. [Android Studio 2.3 正式版发布](https://www.oschina.net/news/82493/android-studio-2-3-final) 7 | Android Studio 2.3 正式版发布了,该版本包含一些新特性,包括对 WebP 支持的更新;ConstraintLayout 库支持更新和布局编辑器的部件面板。提供一个新的 App Link 助手可以帮助你在应用中构建 URI 的统一视图。新的运行按钮提供更直观和可靠的立即运行体验。最后是 Android 模拟器的测试,支持文本的复制和粘贴。详细介绍请看官方发行说明。 8 | 9 | 10 | ## Android开发 11 | #### 1. [从源码出发浅析Android TV的焦点移动原理-上篇](http://t.cn/RijmFaS) 12 | #### 2. [从源码出发浅析Android TV的焦点移动原理-下篇](http://t.cn/RijuZQG) 13 | 相对于手机上用手指点击屏幕产生的Click事件, 在使用Android TV的过程中,遥控器是一个主流的操作工具,通过点击遥控器的方向键来控制焦点的移动。当焦点移动到目标控件上之后,按下遥控器的确定键,才会触发一个Click事件,进而去做下一步的处理。焦点的移动如下图所示。 14 | 15 | #### 3. [RecyclerView 实现滑动删除和拖拽功能](http://t.cn/RijuV2v) 16 | 从Android 5.0开始,谷歌推出了新的控件RecyclerView,相对于早它之前的ListView,优点多多,功能强大,也给我们的开发着提供了极大的便利,今天自己学习一下RecyclerView轻松实现滑动删除及拖拽的效果。 17 | 18 | #### 4. [Android性能优化(一)之启动加速35%](http://www.jianshu.com/p/f5514b1a826c) 19 | 从应用的启动优化开始,根据实际案例,打造闪电般的App启动速度。 20 | 21 | #### 5. [Android 7.0应用冷启动流程分析](http://blog.csdn.net/dd864140130/article/details/60466394) 22 | 最近在为自己Moto G定制Rom,顺便重新读了一遍Android 7.0的相关源码,特此记录当做笔记. 23 | 24 | #### 6. [Android LayoutInflater源码解析](http://allenfeng.com/2017/02/24/how-android-layout-inflater-work/) 25 | 大家对LayoutInflater一定不陌生,LayoutInflater是一个用于将xml布局文件加载为View或者ViewGroup对象的工具,我们可以称之为布局加载器。在Fragment的onCreateView方法、ListView Adapter的getView方法等许多地方都可以见到它的身影。本文详细介绍了LayoutInflater的用法以及加载布局的工作原理。 26 | 27 | #### 7. [Android应用安全风险与防范](https://zhuanlan.zhihu.com/p/25571814?hmsr=toutiao.io) 28 | Android开发除了部分功能采用C/C++编码外,其余主要都是采用Java进行编码开发功能。Java应用非常容易被反编译,Android自然也不例外。只要利用apktool等类似的反编译工具,就可以通过安装包获取源代码。Google为了保护开发者的知识产权,为Android提供了ProGuard混淆方案,以增加反编译后源码阅读,但对于Android开发老司机和逆向工程师来说,解读还原出源代码只是时间问题。 29 | 30 | #### 8. [Android架构那些事之第三方库的隔离](http://www.jianshu.com/p/d959250e0624) 31 | 我们都知道一个好的架构会使我们的开发变得事半功倍。 32 | 设计架构的目的在于使我们的客户端易于扩展、方便单元测试、可复用。 33 | 做到使模块之间低耦合,模块内部高内聚。 34 | 35 | #### 9. [微信tinker快速集成](http://www.jianshu.com/p/e71f73c83045) 36 | 微信tinker快速集成 37 | 38 | ## 开源库&项目&工具 39 | #### 1. [vlayout](https://github.com/alibaba/vlayout) 40 | vlayout是手机天猫Android版内广泛使用的一个基础UI框架项目。提供了一个用于RecyclerView的自定义的LayoutManger,可以实现不同布局格式的混排,目标是支撑客户端native页面的快速开发。它也是Tangram框架的基础模块。 41 | 42 | #### 2. [AndroidSkinAnimator](https://github.com/wutongke/AndroidSkinAnimator) 43 | 皮肤切换动画,支持全局View animation everywhere 44 | 45 | ![AndroidSkinAnimator](https://raw.githubusercontent.com/wutongke/AndroidSkinAnimator/master/gif/5.gif) 46 | 47 | #### 3. [CameraKit-Android](https://github.com/flurgle/CameraKit-Android) 48 | CameraKit is an extraordinarily easy to use utility to work with the infamous Android Camera and Camera2 APIs. Built by Dylan McIntyre. 49 | 50 | #### 4. [Android-CleanArchitecture](https://github.com/android10/Android-CleanArchitecture) 51 | This is a sample app that is part of a series of blog posts I have written about how to architect an android application using Uncle Bob's clean architecture approach. 52 | 53 | ## 联系方式 54 | * Email:yanghui1986527#gmail.com 55 | * Github: https://github.com/snowdream 56 | * Blog: http://snowdream.github.io/blog/ 57 | * 简书:http://www.jianshu.com/u/748f0f7e6432 58 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 59 | * QQ群: 529327615 60 | * 微信公众号: sn0wdr1am 61 | 62 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 63 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#11.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#11 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [个人开发者可申请小程序](https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1490627746&version=1&lang=zh_CN) 7 | 小程序开放个人开发者申请注册,个人用户可访问微信公众平台,扫码验证个人身份后即可完成小程序帐号申请并进行代码开发。 8 | 9 | 请访问:[微信公众平台](https://mp.weixin.qq.com/cgi-bin/registermidpage?action=index&lang=zh_CN) 10 | 11 | #### 2. [天猫团队开源跨平台模块化 UI 界面开发框架 Tangram](https://www.oschina.net/news/83432/alibaba-opensource-tangram) 12 | Tangram,七巧板,是天猫团队刚刚开源的跨平台模块化 UI 界面方案。据悉,之所以命名为 Tangram ,是希望它能像七巧板一样可以通过几块积木就搭出丰富多彩的界面。 13 | 14 | ## Android开发 15 | #### 1. [移动应用设计:综述、导航和浏览](http://t.cn/R60XeGw) 16 | 应用程序现在是主流的提供内容和服务的方式,并已经广受用户信赖。但在一个已经高度被开发的市场里,一款移动应用如何做到有用,有意义并且有价值,以使客户满意并留存呢? Google 的 UX 研究主管 Jenny Gove 为您详细介绍了创建一款优秀的移动应用的 25 条原则,我们会在这次连载中分批次为您逐一详述。 17 | 18 | #### 2. [Android View进阶之RecyclerView 实现滑动删除和拖拽功能](http://t.cn/R60aGB3) 19 | 从Android 5.0开始,谷歌推出了新的控件RecyclerView,相对于早它之前的ListView,优点多多,功能强大,也给我们的开发着提供了极大的便利,今天自己学习一下RecyclerView轻松实现滑动删除及拖拽的效果。 20 | 21 | #### 3. [实现一个带下拉弹簧动画的 ScrollView](http://www.jianshu.com/p/ce6497cada9c) 22 | 在刚推出的 Support Library 25.3.0 里面新增了一个叫 SpringAnimation 的动画,也就是弹簧动画。要是用它来做一个滑动控件下拉回弹的效果,应该不错吧。 23 | 24 | #### 4. [Android 渲染优化](http://wuxiaolong.me/2017/03/26/Rendering/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io) 25 | Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,要每次渲染都成功,这样就必须达到流畅的画面所需要的60fps,否则会发生丢帧的现象,丢帧越多,用户明确感到卡顿。卡顿现象,由于复杂的布局或界面过度绘制未能在每帧16ms内完成导致的。本文讲解了渲染优化的技巧。 26 | 27 | #### 5. [天猫 Android Tangram 的基础 —— vlayout](https://mp.weixin.qq.com/s?__biz=MzAxNjI3MDkzOQ==&mid=2654472702&idx=1&sn=a21256387cc06b2a1833589f71e9b54a) 28 | vlayout 是手机天猫 Android 版内广泛使用的一个基础 UI 框架项目,提供了一个用于 RecyclerView 的自定义的 LayoutManger,可以实现不同布局格式的混排,目标是支撑客户端 native 页面的快速开发。它也是 Tangram 框架的基础模块,现已开源。 29 | 30 | #### 6. [是时候和 Implict Broadcast 说再见了](https://zhuanlan.zhihu.com/p/26029881?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io) 31 | Android O对于系统广播(Broadcast)的改变归根结底都是为了进一步的节省功耗。Google在Android Marshmallo(6.0, API level 23)中引入了Doze and App Standby来改进Android系统的电池表现。本文主要介绍了Android O中对Broadcast的改变。 32 | 33 | #### 7. [Android内存优化总结&实践](https://mp.weixin.qq.com/s/2MsEAR9pQfMr1Sfs7cPdWQ) 34 | Andorid内存优化一直是一个比较重要的话题,我们可以通过各种内存泄露检测组件,MAT查看内存占用,Memory Monitor跟踪整个App的内存变化情况, Heap Viewer查看当前内存快照, Allocation Tracker追踪内存对象的来源,以及利用崩溃上报平台从多个方面对App内存进行监控和优化。本文列举了一些常见的情况,介绍了Android内存优化的方案。 35 | 36 | #### 8. [Android 优化APP 构建速度的17条建议](http://www.jianshu.com/p/a1cc8f2e0877?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io) 37 | 较长的构建时间将会减缓项目的开发进度,特别是对于大型的项目,app的构建时间长则十几分钟,短则几分钟,长的构建时间已经成了开发瓶颈,本篇文章根据Google官方文档,外加作者的一些理解,目的是提供一些提升app构建速度的优化建议。 38 | 39 | ## 开源库&项目&工具 40 | #### 1. [Tangram-Android](https://github.com/alibaba/Tangram-Android/blob/master/README-ch.md) 41 | Tangram是一套动态化构建 Native 页面的框架,它包含 Tangram Android、Tangram iOS,管理后台等一些列基础设施。本工程是 Tangram Android 的sdk 项目地址,底层依赖于vlayout 和 UltraViewPager。 42 | 43 | #### 2. [AppMethodOrder](https://github.com/zjw-swun/AppMethodOrder) 44 | 一个能让你了解所有函数调用顺序的Android库(无需侵入式代码) 45 | 46 | ## 联系方式 47 | * Email:yanghui1986527#gmail.com 48 | * Github: https://github.com/snowdream 49 | * Blog: http://snowdream.github.io/blog/ 50 | * 简书:http://www.jianshu.com/u/748f0f7e6432 51 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 52 | * QQ群: 529327615 53 | * 微信公众号: sn0wdr1am 54 | 55 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 56 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#13.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#13 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [Android Things Developer Preview 3发布](http://t.cn/RXUR4uE) 7 | 4 月 6 日,我们发布了 Android Things Developer Preview 3 (DP3),为该平台带来了一些新功能并修复了若干问题。我们承诺为通过我们平台构建物联网 (IoT) 产品的开发者提供定期更新,而此预览版是践行此承诺的一部分。Android 开发者可使用 Android API 和 Google 服务快速构建智能设备,同时依靠 Google 直接提供的更新始终确保安全性。模块化系统 (SoM) 架构支持使用开发板进行原型开发,然后将原型开发扩展到大规模量产,而与此同时,您仍可继续使用 Google 的 Board Support Package (BSP)。 8 | 9 | #### 2. [Android Studio 2.4 Preview 5 发布](https://www.oschina.net/news/83712/android-studio-2-4-preview5) 10 | Android Studio 2.4 Preview 5 发布了。 11 | 12 | Fixes 13 | * Android Studio 2.4 Preview 5 包含了 IntelliJ 2017.1 的更新。 这是 JetBrains 最新的稳定版本,可能是 Android Studio 2.4 中最后一个主要的IntelliJ更新。 14 | * 我们将继续提升版本质量 15 | 16 | ## Android开发 17 | #### 1. [Android GC 原理探究](http://t.cn/RXU8NB5) 18 | 想写一篇关于android GC的想法来源于追查一个魅族手机图片滑动卡顿问题,由于不断的GC导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和GC的原理,为什么会不断的GC,GC ALLOC和GC COCURRENT有什么区别,能不能想办法扩大堆内存减少GC的频次等等。 19 | 20 | #### 2. [介绍Android原生开发工具包r14](http://t.cn/RXU8rFk) 21 | 现在,可以下载最新版本 Android 原生开发工具包 (NDK)——Android NDK r14。也可以通过 Android Studio 在 SDK 管理器中下载此版本: 22 | https://developer.android.google.cn/ndk/downloads/index.html 23 | 24 | #### 3. [LQRAudioRecord](http://www.jianshu.com/p/27cf4b616f9b) 25 | 本库集成录音与播音功能,使用简单方便,让IM集成语音不再是难题。 26 | 27 | #### 4. [浅谈对于mp3文件中VBR对比CBR的一些基本差异](https://mp.weixin.qq.com/s/TgaTCBl3tlFqvPPPq-hMWA) 28 | 从比特率编码方式的角度来看,目前其中一种最常见的音频文件格式MP3,可以再分为两种类型:一种是恒定比特率CBR(Constant Bit-Rate),这种类型的mp3每一帧的比特率都是恒定唯一的;另外一种就是可变比特率VBR(Variable Bit-Rate),这种类型就跟CBR相反,每一帧的比特率是不固定的,帧与帧之间的比特率可能一样也可能不一样。由于存在这样两种类型,播放mp3文件时需要做的一些工作,比如获取音频信息和播放进度控制,就需要分开处理。 29 | 30 | ## 开源库&项目&工具 31 | #### 1. [从浏览器控制和管理 Android 设备 STF](https://www.oschina.net/p/stf?fromerr=TaH81f5F) 32 | STF(or Smartphone Test Farm)是一个 Web 应用程序,用于从舒适的浏览器远程调试智能手机,智能手表和其他小工具。 33 | 34 | ![从浏览器控制和管理 Android 设备 STF](https://static.oschina.net/uploads/space/2017/0410/163239_Jx25_2720166.jpg) 35 | 具有以下功能 36 | 37 | * 支持 Android 2.3 ~ 5.1:包括 Preview M, Wear, FireOS 38 | 39 | * 键盘和鼠标输入:以及多点触控,即使在 iOS 的 Safari 浏览器中 40 | 41 | * 复制和粘贴:在设备中操作 42 | 43 | * 获取屏幕截图并调整大小 44 | 45 | * 拖放 APK 文件:一步安装和启动应用程序 46 | 47 | * 在任意已安装的浏览器中打开 URL 48 | 49 | * 显示实时过滤的日志 50 | 51 | * 不用离开浏览器运行 Shell 命令 52 | 53 | * 使用 Android Studio,Chrome 调试工具进行远程调试 54 | 55 | * 以及更多:反向端口转发,设备旋转…… 56 | 57 | #### 2. [SlidingRootNav](https://github.com/yarolegovich/SlidingRootNav) 58 | DrawerLayout-like ViewGroup, where a "drawer" is hidden under the content view, which can be shifted to make the drawer visible. 59 | ![SlidingRootNav](https://github.com/yarolegovich/SlidingRootNav/blob/master/art/sample.gif?raw=true) 60 | 61 | #### 3. [GSYVideoPlayer](https://github.com/CarGuo/GSYVideoPlayer) 62 | 视频播放器(IJKplayer),HTTPS支持,支持弹幕,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频本身自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,直接添加控件为封面,列表全屏动画,视频加载速度,列表小窗口支持拖动,5.0的过场效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,其他一些小动画效果。简书: http://www.jianshu.com/p/9fe377dd9750 63 | 64 | #### 4. [Git常用终端命令](http://www.jianshu.com/p/87ab8acf4b87) 65 | Git常用终端命令 66 | 67 | ## 联系方式 68 | * Email:yanghui1986527#gmail.com 69 | * Github: https://github.com/snowdream 70 | * Blog: http://snowdream.github.io/blog/ 71 | * 简书:http://www.jianshu.com/u/748f0f7e6432 72 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 73 | * QQ群: 529327615 74 | * 微信公众号: sn0wdr1am 75 | 76 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 77 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#17.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#17 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [Google 正秘密开发第三款操作系统 Fuchsia](https://www.oschina.net/news/84581/google-fuchsia) 7 | 这是一款开源的、实时操作系统,被其称作Fuchsia。与Android和Chrome OS不同,Fuchsia不是基于Linux,它使用一个全新的、由谷歌开发的微内核,称作“Magenta”。 8 | 9 | #### 2. [媲美 Google,腾讯推出自研图片编码格式 TPG](https://www.oschina.net/news/84579/learn-from-google-tencent-tpg) 10 | 近日,记者从国家知识产权局了解到,腾讯公司正式向国家知识产权局提交了一份关于图片编码技术的专利申请。此项专利被命名为TPG(Tiny Portable Graphics),在数据上TPG图片格式产生的文件大小明显小于JPG/JPEG、PNG、GIF、WEBP等业界主流的图片格式,处于世界领先水平。 11 | 12 | #### 3. [JCP EC 投票否决 Java 模块化系统](https://www.oschina.net/news/84639/jcp-ec-vote-to-deny-jiasaw) 13 | JCP Executive Committee 公布了对 Java Platform Module System(或称为 Jigsaw)的投票结果,以 10 票赞成 13 票反对否决了该提议。 14 | 15 | 投反对票的机构包括了 HPE(惠普企业)、Redhat、IBM、SAP、Twitter、Eclipse 基金会等。这一结果并不出人意料,在这之前,EC 成员 Redhat 和 IBM 公开谈论他们反对模块化系统的观点,认为会导致不兼容。 16 | 17 | #### 4. [Java 9 又要延期?甲骨文撂狠话:强推!](https://www.oschina.net/news/84663/java-9-delayed) 18 | 甲骨文公司近日为了延期超过一年的Java 9而杠上IBM与Red Hat,甲骨文批评两家公司反对Java 9模组化系统的发展,令人失望。 19 | 20 | ## Android开发 21 | #### 1. [Android APK 瘦身 - JOOX Music项目实战](http://t.cn/Ra2Q7wv) 22 | JOOX Music是腾讯海外布局的一个音乐产品,2014年发布以来已经成为5个国家和地区排名第一的音乐App。东南亚是JOOX Music的主要发行地区,由于JOOX Music所面对的市场存在很多的低端机型,并且这些市场的网络环境相对来说是比较差的,为了提升下载转化率,对JOOX Music进行APK瘦身是必不可免的。 23 | 24 | #### 2. [图片加载框架Universal-Image-Loader源码解析](http://t.cn/RaXQRZj) 25 | 可以说是安卓知名图片开源框架中最古老、使用率最高的一个了。一张图片的加载对于安卓应用的开发也许是件简单的事,但是如果要同时加载大量的图片,并且图片用于 ListView、GridView、ViewPager 等控件,如何防止出现OOM、如何防止图片错位(因为列表的View复用功能)、如何更快地加载、如何让客户端程序员用最简单的操作完成本来十分复杂的图片加载工作,成了全世界安卓应用开发程序员心头的一大难题,所幸有了Universal-Image-Loader,让这一切变得简单,从某种意义来讲,它延长了安卓开发者的寿命~ 26 | 27 | #### 3. [Android音量系统分析](http://t.cn/RaX8ZF0) 28 | 最近在处理一个蓝牙设备播放没有声音问题时,发现是设置音量的问题,顺便学习了一下Android系统的音量构架原理及设置方法。这里主要参考了rinswindqin同学写的有关音频及音量分析的文章,加了一些自己的理解及源代码分析。下面以Android 6.0为例来说明。 29 | 30 | #### 4. [ToyBricks简介以及原理分析](http://t.cn/RaAesa1) 31 | 我始终认为,在高内聚,低耦合的原则下,进行组件化,模块化,插件化都是移动应用开发的趋势。 32 | 33 | #### 5. [ToyBricks用户手册](http://t.cn/RaXRMwa) 34 | ToyBricks是一个Android项目模块化的解决方案,主要包括四个部分,APT注解,APT注解处理器,ToyBricks插件(Gradle Plugin),ToyBricks库。 35 | 36 | #### 6. [如何优雅的使用EventBus?](http://www.jianshu.com/p/e00297348f17) 37 | EventBus是一款针对Android优化的发布/订阅事件总线。可以替代广播、startActivityForResult、Handler、异步回调等来实现各组件间、组件与后台线程间的通信。它的优点是开销小,代码更优雅,以及将发送者和接收者解耦。 38 | 39 | ## 开源库&项目&工具 40 | #### 1. [StatusBarUtil](https://github.com/laobie/StatusBarUtil) 41 | 这是一个为Android App 设置状态栏的工具类, 可以在4.4及其以上系统中实现 沉浸式状态栏/状态栏变色,支持设置状态栏透明度,满足你司设计师的各种要求(雾)。 42 | 43 | ![StatusBarUtil](https://github.com/laobie/StatusBarUtil/raw/master/img/use_in_fragment.gif) 44 | 45 | #### 2. [Android-Image-Cropper](https://github.com/ArthurHub/Android-Image-Cropper) 46 | Powerful (Zoom, Rotation, Multi-Source), customizable (Shape, Limits, Style), optimized (Async, Sampling, Matrix) and simple image cropping library for Android. 47 | 48 | ![Android-Image-Cropper](https://github.com/ArthurHub/Android-Image-Cropper/raw/master/art/demo.gif?raw=true) 49 | 50 | #### 3. [CarouselPicker](https://github.com/GoodieBag/CarouselPicker) 51 | A Carousel picker library for android which supports both text and icons . ✨ 52 | 53 | ![CarouselPicker](https://raw.githubusercontent.com/GoodieBag/CarouselPicker/master/gif/gif_image_480.gif) 54 | 55 | ## 联系方式 56 | * Email:yanghui1986527#gmail.com 57 | * Github: https://github.com/snowdream 58 | * Blog: http://snowdream.github.io/blog/ 59 | * 简书:http://www.jianshu.com/u/748f0f7e6432 60 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 61 | * QQ群: 529327615 62 | * 微信公众号: sn0wdr1am 63 | 64 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 65 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#12.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#12 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [Android Studio 2.4 Preview 4 发布,内置 Java 8 支持](https://www.oschina.net/news/83556/android-studio-2-4-preview4) 7 | Android Studio 2.4 Preview 4 发布了。Android Studio 2.4 的最新预览版包括构建工具和模拟器中的 Google Play 的更新,以及一些错误修复。 8 | 9 | #### 2. [Android 超越 Windows 成市场份额第一操作系统](https://www.oschina.net/news/83517/android-market-share-higher-than-windows) 10 | 互联网分析公司 Statcounter 发布报告称,随着移动设备的快速普及,Android 如今首次超越 Windows,成为消费者接入互联网使用最广泛的操作系统。 11 | 12 | #### 3. [Google I/O 2017 大会时间表出炉:安卓 8.0 时代来临](https://www.oschina.net/news/83444/google-io-2017-conference-schedule) 13 | 虽然距离谷歌 I/O 2017 大会开幕还有一个多月的时间,但谷歌在今天已经悄悄放出大会时间表,首场会议将在美国时间 5 月 17 日上午十点在加州举办,所有会议议程将在谷歌 I/O 官网上公布。 14 | 15 | #### 4. [恶意 Wi-Fi 网络能劫持 Android 设备](https://www.oschina.net/news/83613/android-phones-vulnerable-to-device-hijacks-over-wi-fi) 16 | Broadcom Wi-Fi 芯片被 发现存在漏洞,允许恶意 Wi-Fi 信号在设备上执行任意代码。 17 | 18 | 该漏洞影响 iOS 和 Android 设备,苹果已经 释出了补丁,Google 也已经 释出了补丁,但众所周知 Android 设备的安全更新相比苹果是完全不同的故事。 19 | 20 | ## Android开发 21 | #### 1. [Android消息机制源码分析](http://t.cn/R63EtYN) 22 | 从源码的角度分析了Handler机制 23 | 24 | #### 2. [Glide 源码详解](http://t.cn/R63ECzJ) 25 | 我们一起来研究一下Glide的源码,看看Glide到底是怎么将一张图片加载出来的。 26 | 27 | #### 3. [从Android代码中来记忆23种设计模式](http://www.jianshu.com/p/1a9f571ad7c0) 28 | 从Android代码中来记忆23种设计模式 29 | 30 | #### 4. [经典随机Crash之一:线程安全](https://mp.weixin.qq.com/s/GHGMHW0Mz7eYVh7EaF6VNw) 31 | Android QQ 在2016下半年连着好几个版本二灰 Crash 率都很高,如果说有新需求,一灰的 Crash 率高,还能找点理由,可是开发童鞋解过一灰的 Crash 单后,为啥二灰还有这么高的 Crash 率,我们还有覆盖全 SNG、不少外 BG 明星产品的终端稳定性测试工具 NewMonkey 随身版每天都在跑,更何况大多 Top Crash 都发生在用户使用很普通、很频繁的场景,实在令人匪夷所思,那段时间抄送各老板的运营邮件 Crash 率数据天天标红,项目组人心惶惶,发个版本感觉要烧高香,当时作为 Android NewMonkey 核心成员的我更是压力山大,在这样的背景下,我临危受命,负责研究外网 Top Crash,尽可能找到一些共性问题 32 | 33 | #### 5. [经典随机Crash之二:Android消息机制](http://t.cn/R6r54g9) 34 | 好几次灰度top1、top2 Crash发生场景:在很平常、频繁的使用页面,打开一个界面,马上返回,piaji,挂了,估计用户心中有千万只草泥马在奔腾,手机QQ究竟怎么呢? 35 | 36 | #### 6. [Android减包 - 减少APK大小](https://mp.weixin.qq.com/s/ox4WFLMZG63wuoD6_-rCyQ) 37 | 用户经常会避免下载看起来体积较大的应用,特别是在不稳定的2G、3G网络或者在以字节付费的网络。这篇文章描述了怎样减少你的APK大小,这会让更多的用户愿意下载你的应用。 38 | 39 | #### 7. [Android减包 - 使用APK Analyzer分析你的APK](http://mp.weixin.qq.com/s/jj727RQGmPooKaJwPyVUlA) 40 | Android Studio 2.2包含了APK Analyzer,通过它我们能够直观地看到APK的组成。使用APK Analyzer不仅能够减少你花在debug上的时间,而且还能减少你的APK大小。使用APK Analyzer,你能够实现:1.查看APK中文件的绝对大小和相对大小。(译注:相对大小指的是该文件占整个APK大小的百分比);2.理解DEX文件的组成。(译注:能看到DEX文件中包含了哪些类);3.快速查看APK中文件的最终版本(比如AndroidManifest.xml)。 41 | 42 | #### 8. [一看你就懂,超详细java中的ClassLoader详解](http://blog.csdn.net/briblue/article/details/54973413) 43 | ClassLoader翻译过来就是类加载器,普通的Java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载。想想也是的,一次性加载那么多jar包那么多class,那内存不崩溃。本文的目的也是学习ClassLoader这种加载机制。 44 | 45 | #### 9. [Android Shader 实战 各种炫酷效果的基石](http://t.cn/R6rqNoE) 46 | 介绍Android Shader的各种用法。 47 | 48 | ## 开源库&项目&工具 49 | #### 1. [Android-Marshmallow-Boot-Animation](https://github.com/Cleveroad/Android-Marshmallow-Boot-Animation) 50 | Android Marshmallow 系统启动动画效果 51 | 52 | #### 2. [FireworkyPullToRefresh](https://github.com/Cleveroad/FireworkyPullToRefresh) 53 | 一个炫酷的下拉刷新效果 54 | 55 | #### 3. [ShadowImageView](https://github.com/yingLanNull/ShadowImageView) 56 | 一个可以根据图片变颜色,更加细腻的阴影效果的 Imgae 控件 57 | 58 | ## 联系方式 59 | * Email:yanghui1986527#gmail.com 60 | * Github: https://github.com/snowdream 61 | * Blog: http://snowdream.github.io/blog/ 62 | * 简书:http://www.jianshu.com/u/748f0f7e6432 63 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 64 | * QQ群: 529327615 65 | * 微信公众号: sn0wdr1am 66 | 67 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 68 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#9.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#9 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。 4 | 5 | ## 业界新闻 6 | #### 1. [Google 宣布 Android 将加入 Java 8 的原生支持](https://www.oschina.net/news/82929/future-of-java-8-language-feature) 7 | Google 表示已决定将把对 Java 8 语言特性的支持直接添加到当前的 javac 和 dx 工具集中,并不再推荐使用 Jack toolchain。今后,Android 构建系统将提供对 Java 8 语言特性的原生支持。依赖于 Java Class 文件格式的现有工具和插件将能继续工作。 8 | 9 | #### 3. [谷歌称已经修复很多被 CIA 利用的漏洞](https://www.oschina.net/news/82702/google-announce-fixed-bug-cia-attacked) 10 | 昨天“维基解密”网站发布了美国中央情报局(CIA)文件黑客项目的数千份文件。 据外媒报道,谷歌公司今天表示,其已经修复了遭曝光CIA文件中确定的Chrome和Android平台中的很多漏洞。 11 | 12 | #### 4. [阿里宣布 Atlas 开源,提升大规模团队移动开发效率](https://www.oschina.net/news/82821/alibaba-opensource-atlas) 13 | 继 Weex 之后,阿里在移动技术领域又有开源大动作。 14 | 3月13日,手机淘宝安卓客户端容器化框架 Atlas 正式宣布开源。Atlas 由阿里巴巴移动团队自研,以容器化思路解决大规模团队协作问题,实现并行开发、快速迭代和动态部署,适用于 Android 4.x 以上系统版本的大小型 App 开发。 15 | 16 | #### 5. [Android Studio 2.4 Preview 1 发布](https://www.oschina.net/news/82889/android-studio-2-4-preview1) 17 | Android Studio 2.4 Preview 1 发布了,这是一个早期的构建版本,所以在未来几周会有更多的更新。 18 | 19 | #### 6. [Kotlin 1.1.1 发布,基于 JVM 的编程语言](https://www.oschina.net/news/82883/kotlin-1-1-1-is-out) 20 | Kotlin 1.1.1 发布了,这也是 Kotlin 1.1 的首次 bug 修复版本。 21 | 本次更新的主要重点是解决不正确代码生成的回归. 22 | 23 | ## Android开发 24 | #### 1. [yoga初探](http://t.cn/R6v9Kxq) 25 | yoga本是Facebook在React Native里引入的一种跨平台的基于CSS的布局系统,它实现了Flexbox规范,随着该系统不断完善,Facebook对其进行重启发布,并取名为yoga。详情可以参考https://facebook.github.io/。 26 | 27 | #### 2. [Atlas-手淘组件化框架的前世今生和未来的路](http://t.cn/R6vCL8w) 28 | 在手机淘宝,Atlas是一个扎根于Android客户端的一个组件化容器框架,相比神话中用手和头支撑起苍天的泰坦神族,Atlas在手淘默默无闻地承载着手淘上丰富业务的运行,伴随着数不清的功能在用户手中经历新老交替。 29 | 30 | #### 3. [NDK Maping 发布啦](http://t.cn/R6vCKqx) 31 | NDK Mapping 的主要工作就是完成 class 从 JVM 层到 JNI 层的映射。通常情况下,当我们进行 JNI 开发时,无可避免的要进行类的传递操作,而 JNI 提供的 API 却让代码简单不起来,大量的容易出错的体力劳动也是这么来的。 32 | 33 | #### 4. [手机QQ Hybrid的架构演进](http://mp.weixin.qq.com/s/J_7uiET3p7MfJTq5m59AUw) 34 | 现在主流的hybrid还是H5 + native。H5在native中很明显的问题大家都看得到,比如打开应用的时候要等很久的页面loading。还有一点是每次打开H5都涉及到网络交互、文件下载,这些操作会消耗用户的流量,如果流量消耗大用户也会不高兴。本文给大家分享的内容主要是介绍QQ会员团队如何在页面打开时间以及用户流量方面所做的优化,分别对应sonic和reshape的两个自主技术框架。 35 | 36 | #### 5. [React Native for Android异常处理概览](http://mp.weixin.qq.com/s/aWuenpGOKug4fovT5uKXTQ) 37 | 研究RN框架异常的动机在于,需要建立起一套针对性的容错机制,毕竟它还是一个不够成熟的框架。期望能够做到的效果就是,对于每一个RN页面的启动,能够在进入页面至退出页面期间侦测所有发生的RN相关的崩溃,然后根据崩溃来考虑该页面是否该有降级策略、判断框架是否真的能够支持稳定迭代。本文从启动期和运行期两方面介绍了RN的异常方案。 38 | 39 | #### 6. [Android Drawable完全解析(一):Drawable源码分析系列](http://www.jianshu.com/p/c56b762210f2) 40 | Android开发中,Drawable几乎无处不在,Drawable涉及的面很广,尤其是竟然有那么多的继承类。我们常用的有ColorDrawable、StateListDrawable、BitmapDrawable等很有限的几个子类,大多数开发者对于Drawable的应用还是太零散了。因此作者写了关于Drawable的系列文章,从源码的角度详细分析了Drawable的实现。 41 | 42 | #### 7. [Android中一个简单有用的发现性能问题的方法](http://droidyue.com/blog/2017/03/13/a-small-trick-to-detect-time-consuming-task/) 43 | 在Android中,性能优化是我们持之不懈的工作。这其中,在主线程执行耗时的任务,可能会导致界面卡顿,甚至是ANR(程序未响应)。当然Android提供了很多优秀的工具,比如StrictMode,Method Tracing等,便于我们检测问题。本文介绍了一个更加简单有效的方法。相比StrictMode来说更加便于发现问题,相比Method Tracing来说更加容易操作。 44 | 45 | ## 开源库&项目&工具 46 | #### 1. [Atlas](http://atlas.taobao.org) 47 | Atlas - 带你重返App开发的田园时代 48 | 49 | #### 2. [BlockCanaryEx](https://github.com/lqcandqq13/BlockCanaryEx) 50 | 比起BlockCanary,BlockCanaryEx可以知道项目中所有方法的执行时间和次数。在app发生卡顿时,可以将耗时的方法直接展示给开发者。 51 | 52 | #### 3. [FadingTextView](https://github.com/rosenpin/FadingTextView) 53 | A TextView that changes its content automatically every few seconds 54 | 55 | 56 | ## 联系方式 57 | * Email:yanghui1986527#gmail.com 58 | * Github: https://github.com/snowdream 59 | * Blog: http://snowdream.github.io/blog/ 60 | * 简书:http://www.jianshu.com/u/748f0f7e6432 61 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 62 | * QQ群: 529327615 63 | * 微信公众号: sn0wdr1am 64 | 65 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 66 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#10.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#10 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [O-MG,Google 发布 Android O 开发者预览版!](https://www.oschina.net/news/83135/first-preview-of-android-o) 7 | 今天,Google 对外推出了 Android O (Android 8.0)操作系统的首个开发者预览版,并可供下载。同时,Google 也表示该版本还有很多性能和稳定性的工作待完成,不建议消费者日常使用。 8 | 9 | #### 2. [Android 原生开发工具包 NDK r14 发布](https://www.oschina.net/news/83136/android-ndk-r14) 10 | NDK (Native Development Kit) ,Android 原生开发工具包,是一个包含 API、交叉编译器、链接程序、调试器、构建工具、文档和示例应用程序的综合工具集。 11 | 最新版本的 Android NDK r14,现在可供下载,也可通过 Android Studio 在 SDK 管理器中使用。 12 | 13 | #### 3. [Google 又弃坑了,Jack+Jill vs. javac+dx](https://zhuanlan.zhihu.com/p/25814519) 14 | Jack + Jill被搞出来是原本是取代 javac + dx的,也就去年的事情,当大家纷纷准备在build.gradle里面纠结要不要打开 `useJack` 的时候,Google说,未来为支持Java8新特性,不再考虑Jack/Jill。 15 | 16 | ## Android开发 17 | #### 1. [在 Android Studio 2.2 中愉快地使用 C/C++](http://wl9739.github.io/2016/09/21/在-Android-Studio-2-2-中愉快地使用-C-C-md/) 18 | 本篇文章将会说明如何使用 Android Studio 来创建、配置 Android 项目,以支持 native code,以及将其运行到你的 app 中。 19 | 20 | #### 2. [GDE专栏 | 一个完整的示例:Android Things和TensorFlow能擦出怎样的火花?](http://t.cn/R6JxwHs) 21 | 现在深度学习很火,那我们就在 Android Things 中,利用摄像头抓拍图片,让 TensorFlow 去识别图像,最后用扬声器告诉我们结果。 22 | 23 | #### 3. [教你手写一个贝塞尔曲线效果的Loading View](http://www.jianshu.com/p/9c07c9409ccd) 24 | BesselLoadingView是一个贝塞尔曲线效果的加载过渡动画。使用canvas绘制的自定义view。 25 | 26 | #### 4. [图解View测量、布局及绘制原理](http://www.jianshu.com/p/3d2c49315d68) 27 | Android中自定义View一直是一个高级的技能,入门比较难,看起来很高大上。想要学会自定义View,当然要理解View的测量、布局及绘制原理,本篇文章将以图表的形式讲解View的测量、布局及绘制原理。 28 | 29 | #### 5. [美团点评移动网络优化实践](http://tech.meituan.com/SharkSDK.html) 30 | 网络优化对于App产品的用户体验至关重要,与公司的运营和营收息息相关。这里列举两个公开的数据:1.页面加载超过3秒,57%的用户会离开。2.Amazon页面加载延长1秒,一年就会减少16亿美金营收。在做网络优化前,我们首先要为网络通信质量设立一个标尺。在美团点评,监控团队开发了基于端到端的客户端监控平台。这里要先解释一下“端到端”的含义:是指请求从客户端发出到服务端响应返回的整个过程。它区别于后台服务监控,是一种从用户角度观察到的真实体验监控。 31 | 32 | #### 6. [理解JobScheduler机制](http://gityuan.com/2017/03/10/job_scheduler_service/) 33 | 对于满足网络、电量、时间等一定预定条件而触发的任务,那么jobScheduler便是绝佳选择。JobScheduler主要用于在未来某个时间下满足一定条件时触发执行某项任务的情况,那么可以创建一个JobService的子类,重写其onStartJob()方法来实现这个功能。 34 | 35 | #### 7. [Android热更新方案Robust开源,新增自动化补丁工具](https://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651746151&idx=1&sn=a6ab1365133ba3e0a2b082ad8240cd7e) 36 | Robust热更新系统借鉴Instant Run原理,实现了一个兼容性更强而且实时生效的热更新方案。其基本思路是,Robust热更新系统在一个方法的入口处插入一段跳转代码,当发现某个方法出现bug就跳转执行补丁中的代码,略过原有代码的执行,否则执行原有方法体逻辑。 37 | 38 | #### 8. [Android应用优化小手册](http://blog.csdn.net/dd864140130/article/details/62431927) 39 | 对我们技术从业者而言,很多时候时候不是我们不知道怎么做,而是不知道做什么?今天系统的总结自己关于如何对Android应用进行优化的一些经验,共计八个维度. 40 | 41 | ## 开源库&项目&工具 42 | #### 1. [🍼Debug Bottle]() 43 | Android Java / Kotlin 程序员开发调试工具。Debug Bottle的所有功能均建立在App的debug版本中,不会对release版本产生任何影响。Debug Bottle旨在提高开发效率,把控App质量。 44 | 45 | ![🍼Debug Bottle](https://raw.githubusercontent.com/kiruto/debug-bottle/1.1.x/screenshots/scalpel-view.png) 46 | 47 | #### 2. [使用WebGL 2.0更快地渲染 3D](http://t.cn/R6JxxbF) 48 | WebGL JavaScript API 将硬件加速 3D 图形技术带入网络。 49 | 50 | #### 3. [Android可伸缩布局-FlexboxLayout(支持RecyclerView集成)](http://t.cn/R6JxXYU) 51 | FlexboxLayout是一个Android平台上与CSS的 Flexible box 布局模块 有相似功能的库。Flexbox 是CSS 的一种布局方案,可以简单、快捷的实现复杂布局。FlexboxLayout可以理解成一个高级版的LinearLayout,因为两个布局都把子view按顺序排列。两者之间最大的差别在于FlexboxLayout具有换行的特性。 52 | 53 | #### 4. [Robust](https://github.com/Meituan-Dianping/Robust) 54 | 新一代热更新系统Robust,对Android版本无差别兼容。无需发版就可以做到随时修改线上bug,快速对重大线上问题作出反应,补丁修补成功率高达99.9%。 55 | 56 | ## 联系方式 57 | * Email:yanghui1986527#gmail.com 58 | * Github: https://github.com/snowdream 59 | * Blog: http://snowdream.github.io/blog/ 60 | * 简书:http://www.jianshu.com/u/748f0f7e6432 61 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 62 | * QQ群: 529327615 63 | * 微信公众号: sn0wdr1am 64 | 65 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 66 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#1.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#1 2 | 3 | ## 业界新闻 4 | #### 1. [“OK, Google” 开放体验,可以为你的应用服务了](https://www.oschina.net/news/80777/ok-google-open-experience) 5 | ![OK, Google](https://static.oschina.net/uploads/space/2017/0107/223953_Qnv7_2896879.gif) 6 | 7 | #### 2. [谷歌与菲亚特合作开发新款 Android 车载系统](https://www.oschina.net/news/80625/google-cooperate-with-fiat-to-develop-android-vehicle-system) 8 | 北京时间 1 月 3 日消息,据外媒报道,谷歌和菲亚特-克莱斯勒汽车公司周一在国际消费电子展(CES)开幕前宣布,两家公司已在合作开发一款基于 Android 系统的新版车载信息娱乐系统。 9 | 10 | #### 3. [Google Play服务将最低支持API级别14](http://dwz.cn/4ZU0Q3) 11 | Google Play 服务客户端内容库及 Firebase for Android 客户端内容库的 10.0.0 版本将是支持 Android API 级别 9(Android 2.3,Gingerbread)的最后版本。这些内容库的下一计划版本是 10.2.0,该版本会将支持的最低 API 级别从 9 提升至 14(Android 4.0.1,Ice Cream Sandwich)。此变更将于 2017 年初实施。 12 | 13 | ## Android开发 14 | #### 1. Google分享系列 15 | * [Android 7.x的新增功能 (Google开发者大会演讲PPT&视频)](http://dwz.cn/4ZU4VG) 16 | * [Android开发工具中的新增功能 (Google开发者大会演讲PPT&视频)](http://dwz.cn/4ZUaYw) 17 | * [“哎呀!我的 Android 应用程序又崩溃了!” (Google开发者大会演讲PPT&视频)](http://dwz.cn/4ZUgwG) 18 | * [Android开发中的电量和内存优化 (Google开发者大会演讲PPT&视频)](http://dwz.cn/4ZUiIF) 19 | * [Vulkan-专为Android打造的高性能3D图像API (Google开发者大会演讲PPT&视频)](http://dwz.cn/4ZUjLB) 20 | 21 | #### 2. [微信终端跨平台组件 mars 系列](http://t.cn/RIB70MM) 22 | 2012 年中,微信支持包括 Android、iOS、Symbian 三个平台。但在各个平台上,微信客户端没有任何统一的基础模块。2012 年的微信正处于高速发展时期,各平台的迭代速度不一、使用的编程语言各异,后台架构也处在不断探索的过程中。多种因素使得各个平台基础模块的实现出现了差异,导致出现多次需要服务器做兼容的善后工作。网络作为微信的基础,重要性不言而喻。 23 | 24 | #### 3. [Android无处不在,Android开发者大有可为](http://t.cn/RIE1ott) 25 | Android Things 正式接替 Brillo 亮相,名称的改变带来了什么新的内容,广大 Android 开发者如何进入这一新的领域,通过本文,你不仅会了解 Android Things 的来龙去脉,也会直接通过代码来体验开发带给你的魅力。 26 | 27 | #### 4. [HttpResponseCache原理分析](http://qianzui.github.io/blog/2015-03-29-httpresponsecache-source-code-analysis/) 28 | 从Android4.0(API 14)开始,SDK源码中新增了一个类:android.net.http.HttpResponseCache.使用这个类可以很方便的对HTTP和HTTPS请求实现cache,所有的缓存逻辑再也不用自己写了,只要你使用HttpURLConnection或者HttpsURLConnection作为默认的网络请求库(也是Google官方建议使用的),底层默认帮你实现的缓存的管理,不支持HttpClient。 29 | 30 | #### 5. [贝塞尔Loading——化学风暴](http://dwz.cn/4ZUWpc) 31 | 谈到贝塞尔曲线,很多人会觉得高逼格、复杂、头疼,实则不然,贝塞尔曲线经过android封装,已经显得娇俏可爱,简单好用,之前一些红极一时的效果也均是由其打造,比如QQ的“一键退潮”效果、电子书曲面翻页效果…… 现在咱们就用贝塞尔曲线一起从0到1打造一个拥有极致体验、清秀灵动的GABottleLoading效果 32 | 33 | #### 6. [RecyclerView 必知必会](http://dwz.cn/507FK7) 34 | RecyclerView是Android 5.0提出的新UI控件,可以用来代替传统的ListView。 35 | 36 | #### 7. [手游热更新方案xLua开源:Unity3D下Lua编程解决方案](http://dwz.cn/507Iol) 37 | xLua是Unity3D下Lua编程解决方案,自2016年初推广以来,已经应用于十多款腾讯自研游戏,凭借其出色的性能,易用性,扩展性而广受好评。 38 | 39 | ## 开源库&项目&工具 40 | #### 1. [GABottleLoading](https://github.com/Ajian-studio/GABottleLoading) 41 | Bezier storm(贝塞尔风暴) 42 | 43 | ![GABottleLoading](https://raw.githubusercontent.com/Ajian-studio/GABottleLoading/master/raw/bottleLoading_origin.gif) 44 | 45 | #### 2. [remusic](https://github.com/aa112901/remusic) 46 | 仿网易云音乐安卓版客户端 47 | 48 | ![remusic](https://git.io/vMC6f) 49 | 50 | #### 3. [PathAnimView](https://github.com/mcxtzhang/PathAnimView) 51 | 用于做Path动画的自定义View 52 | 53 | ![PathAnimView](https://github.com/mcxtzhang/PathAnimView/raw/master/gif/qianbihua.gif) 54 | 55 | #### 4. [xLua](https://github.com/Tencent/xLua) 56 | xLua is a hot-fix solution plugin for Unity3D, it supports android, ios, windows, osx, etc. 57 | 58 | ![xLua](https://github.com/Tencent/xLua/raw/master/Assets/XLua/Doc/xLua.png) 59 | 60 | #### 5. [android-snowfall](https://github.com/JetradarMobile/android-snowfall) 61 | Fully customizable implementation of "Snowfall View" on Android. 62 | 63 | ![android-snowfall](https://raw.githubusercontent.com/JetradarMobile/android-snowfall/master/art/hotellook-demo.gif) 64 | 65 | ## 联系方式 66 | * Email:yanghui1986527#gmail.com 67 | * QQ群: 529327615 68 | * 微信公众号: sn0wdr1am 69 | 70 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 71 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#25.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#25 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [360 宣布开源 RePlugin ,让插件化飞入寻常应用家](https://www.oschina.net/news/86322/360-opensource-replugin) 7 | 奇虎 360 宣布于今日正式开源其插件化方案 RePlugin 。 8 | 9 | RePlugin 是一套完整的、稳定的、适合全面使用的,占坑类插件化方案,于 2014 年中旬从 360 手机卫士团队产生,并正式在卫士上启用。360 表示 RePlugin 无论大小项目均可使用,稳定与灵活兼得,目前 360 公司几乎所有的亿级用户量的 APP ,以及多款主流第三方 APP ,都采用了 RePlugin 方案。 10 | 11 | #### 2. [滴滴宣布开源 Android 端插件化框架 VirtualAPK](https://www.oschina.net/news/86317/didi-opensource-virtualapk) 12 | 滴滴于今天正式宣布开源其 Android 插件化框架 —— VirtualAPK ,这也是滴滴公司的首个对外开源项目。 13 | 14 | #### 3. [WCDB 1.0.2 发布,腾讯开源的移动数据库框架](https://www.oschina.net/news/86493/wcdb-1-0-2) 15 | WCDB 1.0.2 已发布,WCDB 是腾讯开源的一个高效、完整、易用的移动数据库框架,基于 SQLCipher ,支持 iOS、macOS 和 Android 。 16 | 17 | #### 4. [Mars 1.1.7 发布,微信跨平台跨业务的终端基础组件](https://www.oschina.net/news/86529/mars-1-1-7) 18 | Mars 是微信官方的跨平台跨业务的终端基础组件,目前已接入微信 Android、iOS、Mac、Windows、WP 等客户端。 19 | 20 | ![Mars](https://static.oschina.net/uploads/space/2017/0707/075550_luMz_2896879.png) 21 | 22 | ## Android开发 23 | #### 1. [深入探索Android热修复技术原理](http://t.cn/RKAjVCB) 24 | 读完本书,你将会对Android热修复技术有很深刻的认识,不仅能很大改进工作效率,对于系统底层原理的理解和今后的开发工作都有很大帮助。目前热修复原理还经常出现在高级Android技术岗位的面试题里,对付它们你也将得心应手。 25 | 26 | 对了,你甚至可以自己实现一个完善的热修复框架,对系统底层原理有更深的理解和掌握。 27 | ![深入探索Android热修复技术原理Â](https://mmbiz.qpic.cn/mmbiz_jpg/Z6bicxIx5naLxCKLR3YbOVpTGzHQwI7oHPt2d4qVrGFGa8lb2vZApsQ8dRPtQjQZRib2hGxJTDsHKqmjRiamdNVZA/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1) 28 | 29 | #### 2. [Kotlin 泛型详解](http://t.cn/RKAlaVx) 30 | Kotlin 100% 与 Java 兼容,所以抛开语言表面上面的种种特质之外,背后的语言逻辑或者说“灵魂”与 Java 总是想通的。本文只涉及 Kotlin Jvm,Kotlin Js、Kotlin Native 的具体实现可能有差异。 31 | 32 | #### 3. [Android 平台 Native 代码的崩溃捕获机制及实现](http://t.cn/RKAlR9X) 33 | 在Android平台,native crash一直是crash里的大头。native crash具有上下文不全、出错信息模糊、难以捕捉等特点,比java crash更难修复。 34 | 35 | #### 4. [GIF简述及其在QQ音乐的应用](http://t.cn/RKAjQKq) 36 | GIF(Graphics Interchange Format)是CompuServe公司在1987年开发的图像文件格式,原义是图像互换格式。GIF是一种基于LZW算法的连续色调的无损压缩格式,其压缩率一般在50%左右,它不属于任何应用程序。 37 | 38 | #### 5. [Android NDK开发扫盲及最新CMake的编译使用](http://www.jianshu.com/p/6332418b12b1) 39 | 本篇文章旨在简介 Android 中 NDK 是什么以及重点讲解最新 Android Studio 编译工具 CMake 的使用。 40 | 41 | #### 6. [WebView 安全性的新功能](https://mp.weixin.qq.com/s/DZY_rHW2RyV-Q-FA3pH--w) 42 | 应用程序中对于外部和不信任内容的处理经常是重要的功能之一。新闻阅读器显示头条新闻文章、购物应用展示销售物品的目录。作为处理不信任内容而带来的相关风险是一个攻击者能够损害您的应用程序主要的方式之一,即传递给你错误格式的内容。 43 | 44 | #### 7. [深入理解 Android 控件](https://pqpo.me/2017/07/01/learn-android-view/) 45 | 本篇文章主要通过源码讲述 Android 控件系统,包括输入事件是如何产生的, View 是如何绘制的,输入事件是如何传递给 View 的,Window token 与 type 之间的联系等。整个系统比较复杂,每个部分只能点到为止,有兴趣可以继续深入,主要是让读者对 Android 控件系统有一个大体的认识。 46 | 47 | ## 开源库&项目&工具 48 | #### 1. [Qihoo360/RePlugin](https://github.com/Qihoo360/RePlugin) 49 | RePlugin是一套完整的、稳定的、适合全面使用的,占坑类插件化方案。 50 | 51 | #### 2. [VirtualAPK](https://github.com/didi/VirtualAPK) 52 | A powerful and lightweight plugin framework for Android 53 | 54 | #### 3. [MaterialDrawer 5.9.4 发布,Android 侧滑显示控件](https://www.oschina.net/news/86384/materialdrawer-5-9-4) 55 | MaterialDrawer 5.9.4 已发布,MaterialDrawer 是一个类似 Google 官方 NavigationView 侧滑显示控件, 能够实现跟 NavigationView 一样的效果, 同时还支持自定义效果, 自由度非常高。 56 | 57 | ![MaterialDrawer](http://static.oschina.net/uploads/img/201603/17172136_am8K.jpg) 58 | 59 | #### 4. [SmartRefreshLayout](https://github.com/scwang90/SmartRefreshLayout) 60 | Android智能下拉刷新框架,支持越界回弹,集成了几十种炫酷的Header和 Footer https://segmentfault.com/a/1190000010066071 61 | 62 | ## 联系方式 63 | * Email:yanghui1986527#gmail.com 64 | * Github: https://github.com/snowdream 65 | * Blog: http://snowdream.github.io/blog/ 66 | * 简书:http://www.jianshu.com/u/748f0f7e6432 67 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 68 | * QQ群: 529327615 69 | * 微信公众号: sn0wdr1am 70 | 71 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 72 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#27.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#27 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [Android 8.0 正式版要来了,预计 8 月初推出](https://www.oschina.net/news/86939/android-o-release-date) 7 | 最新的消息,据 PhoneArena 报道,Android 8.0 正式版定于2017年8月中上旬推出。本月底,最后一个开发者预览版(Developer Preview 4)就会放出,从而无限接近正式形态。 8 | 9 | #### 2. [真的来了!工信部将成立安卓统一推送联盟](https://www.oschina.net/news/86943/android-messaging-standard) 10 | 上个月,工信部旗下泰尔实验室发布消息称,将在国内联合多家厂商制定安卓统一推送服务(Unified Push Service,简称UPS)技术标准,旨在为国内的消息推送服务建立统一的标准,为终端用户提供更好的手机使用体验,为应用开发者更好解决消息推送需求,目前该标准已经进入厂商招募阶段。 11 | 12 | ## Android开发 13 | #### 1. [有了libco,异步化都成了小case!](http://t.cn/RKBRZy0) 14 | 工作后一直在做c++后台服务开发,框架基本都是多进程多线程的模型,也基本能解决绝大部分问题。不同的应用场景下,可以通过同步或者异步的方式来满足业务或者性能的要求。 15 | 16 | #### 2. [Android远程调试的探索与实现](http://t.cn/RKBQKA4) 17 | 能否开发一种工具,既不需要用户深度配合也不需要提前埋点就能方便、快速地定位线上问题? 18 | 19 | #### 3. [页面结构化在 Android 上的尝试](http://t.cn/RKBQ8iN) 20 | MVP开发模式可以帮助项目结构解耦,但其庞大的方法数增加,较为笨重设计对于手Q项目并不很适合。参考之前Web开发经验,提出以页面结构化的解耦方式组织代码。下面讲讲Lego在Android上一次小小尝试。 21 | 22 | #### 4. [Android 视图高度和阴影的那点事儿](http://yifeng.studio/2017/02/26/android-elevation-and-shadow/) 23 | Material Design 规范针对 UI 元素提出了“高度”这一概念,使过去流行于拟物化设计中的阴影效果,在扁平化设计中消失了很久之后,再次显现。不过,虽然视图高度更多的是以阴影的形式直观地表现在界面中,但更多地是强调一个元素相对重要性的问题。在三维空间中,拥有更高高度的 UI 元素,显然对于用户来讲,相比于其他元素,更加凸显其重要性,更加希望被用户注意到,甚至被频繁操作,这也是设计人员最想表达的初衷。 24 | 25 | #### 5. [在Android中实现阴影效果](http://www.yiqivr.com/2015/03/03/在Android中实现阴影效果/) 26 | 在Android L推出后,Google提出了全新的设计语言:材质设计。其中很重要的一点就是阴影效果的使用,你可以为每一个View设置一个elevation值,相当于除了x、y之外的z值,z值决定了阴影的大小,z值越大表示阴影越大。z值包含两个成分:elevation和translation。elevation是一个静态的成分,translation使用了动画:Z = elevation + translationZ。 27 | 28 | #### 6. [Kotlin 101](http://www.slatekit.com/kotlin101.html) 29 | This is a introduction to Kotlin which covers the language features in a concise, reference style approach. For more in-depth documentation please refer to the resources below. 30 | 31 | #### 7. [Kotlin 语言入门宝典 | Android 开发者 FAQ Vol.5](http://t.cn/RKBQUL0) 32 | 随着 Kotlin 的快速崛起,我们注意到越来越多的开发者开始关注这个新兴的语言。本期《Googel Play 开发者 FAQ》,我们特别推出了 Kotlin 语言专题,希望这些内容有助于您更好地了解 Kotlin 语言的特性和发展现状,并尝试使用 Kotlin 语言进行 Android 开发。 33 | 34 | 35 | #### 8. [Gradle详解:使用 Gradle 对应用进行个性化定制](http://t.cn/RKB8yNK) 36 | 本篇文章主要根据实际开发中遇到的需求,讲解使用 Gradle 对应用的不同版本进行个性化定制。 37 | 38 | #### 9. [Kotlin中的单例模式](http://droidyue.com/blog/2017/07/17/singleton-in-kotlin/) 39 | 在编程中,我们都应该接触到设计模式,无论是从时间总结,亦或者是从书上习得后尝试使用。这其中单例模式,是我们编程过程中很常见,也很简单的一种设计模式。我曾经写过一篇比较通用的关于该模式的文章,即单例这种设计模式。 40 | 41 | ## 专题栏目 - Weex 42 | #### 1. [快速上手](https://weex.incubator.apache.org/cn/guide/) 43 | #### 2. [教程](https://weex.incubator.apache.org/cn/guide/) 44 | #### 3. [手册](https://weex.incubator.apache.org/cn/references/) 45 | #### 4. [参与](https://weex.incubator.apache.org/cn/guide/contributing.html) 46 | #### 5. [工具](https://weex.incubator.apache.org/cn/playground.html) 47 | #### 6. [常见问题](https://weex.incubator.apache.org/cn/faq.html) 48 | 49 | ## 开源库&项目&工具 50 | #### 1. [Android 9-patch shadow generator](http://inloop.github.io/shadow4android/) 51 | 一个在线工具,通过 GUI 方式制作 .9 阴影背景图。 52 | 53 | #### 2. [shadow-layout](https://github.com/dmytrodanylyk/shadow-layout) 54 | Android Shadow Layout 55 | 56 | #### 3. [Mscgen](http://www.mcternan.me.uk/mscgen/) 57 | 画时序图工具推荐 58 | 59 | ![Mscgen](http://www.mcternan.me.uk/mscgen/img/example0.png) 60 | 61 | #### 4. [libco](https://github.com/Tencent/libco) 62 | libco is a coroutine library which is widely used in wechat back-end service. It has been running on tens of thousands of machines since 2013. 63 | 64 | ## 联系方式 65 | * Email:yanghui1986527#gmail.com 66 | * Github: https://github.com/snowdream 67 | * Blog: http://snowdream.github.io/blog/ 68 | * 简书:http://www.jianshu.com/u/748f0f7e6432 69 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 70 | * QQ群: 529327615 71 | * 微信公众号: sn0wdr1am 72 | 73 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 74 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#16.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#16 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [今年Android全球手机市场份额将增长5个百分点至90%](http://www.cnbeta.com/articles/tech/606287.htm) 7 | 业界人士估计,今年Android在全球智能手机市场上的份额由去年的85%增长至90%。 8 | 9 | #### 2. [Glide 3.8.0 发布,Android 图片加载和缓存库](https://www.oschina.net/news/84433/glide-3-8-0) 10 | 更新内容如下: 11 | 12 | ### 新特性 13 | 14 | 给 GIF 新增 getTotalLoopCount (#1836, thanks to @toyama-sumio) 15 | 16 | 添加方法以关闭不使用集成库的应用程序的清单解析(#1754, thanks to @joshzana) 17 | 18 | 添加 Uris 连接支持(#394, thanks to @R4md4c) 19 | 20 | 更好地处理 OOMs (#1057, thanks to @dmapr and @ihenchi) 21 | 22 | ### 修复 23 | 24 | 修复了 GIF 处理和解码的各种问题 (thanks @TWiStErRob, @toyama-sumio, @osama and @kojilin) 25 | 26 | 27 | ## Android开发 28 | #### 1. [关于 Android 7.0 适配中 FileProvider 部分的总结](http://t.cn/RaZehY3) 29 | 由于 Android 7.0 或更高版本的系统在国内手机市场上的占比不是很高,很多 Android 开发人员并没有做 7.0 适配工作,同时测试人员也容易忽视这方面的兼容问题。这导致 7.0 及以上版本的手机用户在使用到应用部分功能时可能出现 App 崩溃闪退。其中,大部分原因都是由项目中使用到 file:// 类型的 URI 所引发的。本文我们便来一探究竟。 30 | 31 | #### 2. [写给Android开发者的Java 8简单入门教程](http://tangpj.com/2017/04/24/java8-inAndroid/) 32 | Java 8是在2014年3月发布的,Android工程师为什么要关心Java 8呢?理由是Java 8所做的改变比Java历史上任何一次改变都要深远。Java 8对于程序员的主要好处在于它提供了更多的编程工具和概念,能以更快,更重要的是能以更为简洁、更易于维护的方式解决新的或现有的编程问题。我希望通过这篇文章,能让读者对Java 8产生兴趣,从而使用Java 8进行开发。 33 | 34 | #### 3. [有赞App模块化实战经验总结](https://youzanmobile.github.io/2017/04/14/youzan-app-modularization/) 35 | 随着有赞电商业务的不断发展壮大,App端所承担的功能也越来越重,特别是代码几易其主之后开始变得杂乱无章,牵一发而动全局的事情时常发生。为了应对团队壮大之后的开发模式,我们必须要对业务进行隔离,同时沉淀出通用组件,完善移动开发的基础设施。 36 | 37 | #### 4. [Android中的FORTIFY](http://developers.googleblog.cn/2017/04/android-fortify.html) 38 | FORTIFY是Android自2012年中以来一直配备的一项重要的安全功能。去年初,在将默认的C/C++编译器从GCC迁移为Clang后,Google投入大量时间和精力,确保FORTIFY在Clang中的质量与之前相当。为做到这一点,Google重新设计了某些关键的FORTIFY功能的工作方式,具体将在下文介绍。 39 | 40 | 41 | #### 5. [分析Android V2新签名打包机制](http://t.cn/RaZDz70) 42 | Android Studio 2.2发布之后公示了很多新特性,其中一些特性继承在了gradle plugin当中,这些不易被我们发现,比如新的签名机制(APK Signature Scheme v2),本文对Android Gradle 2.2新推出来的新签名打包机制(V2新签名方案)作出相关分析,目前在Android 7.0以及之上版本已经对这套新签名机制提供了支持,因此随着版本的提升,新签名机制方案将是大势所趋。 43 | 44 | 45 | #### 6. [Android 方法数杂谈](http://t.cn/RaZDSwD) 46 | 在做Android应用研发时,尤其是开发大型应用时,我们很容易遇到Android方法超过65536的现象。即便进行分 dex 处理,在功能日益增加的今天,主 dex 依然会面临方法数不够用的窘境,然后不得不通过各种压缩、裁剪代码,才得以上线。虽然现在已有广为人知的现成解决方案,然墨子有云:"治于神者,众人不知其功,争于明者,众人知之",回想起这几年间 Android 程序员和方法数之间林林总总的相爱相杀,发现很多问题既没有事前疏导,也缺乏事后防范总结,所以此刻谈谈方法数这个问题的本源,对达到“治于神”这一境界是存在其必要性的。 47 | 48 | #### 7. [Android之低功耗蓝牙的基本使用](http://t.cn/RaZDjjs) 49 | 最近在工作中使用到蓝牙的功能,当然我们这个蓝牙时跟蓝牙芯片结合使用的,而不是手机跟手机连接通信的。其实本质时差不多的,只是设备不一样罢了。在这里我不会贴出蓝牙那些协议等等复杂的名词解释,因为这个不是一两句话能解释的清楚,在我们先不太了解蓝牙的这些专业名词之前,我们先掌握它的基本使用就可以了,后续如果想深入了解的话,我们再花时间去学习。本文介绍的低功耗的蓝牙,是 Android 4.3 才开始支持的,而要使用传统蓝牙和高版本的蓝牙请参照官方文档,有中文介绍哦。 50 | 51 | #### 8. [Android WebView详解,常见漏洞详解和安全源码](http://t.cn/RaZDR0k) 52 | 现在市面上的 APP 根据类型大致可以分为 3 类:Native APP、Web APP 和 Hybrid APP,而 Hybrid APP 兼具 “Native APP 良好用户交互体验的优势”和 “Web APP 跨平台开发的优势”,现在很多的主流应用也是使用 Hybrid 模式开发的。 53 | 54 | #### 9. [Android自定义全键盘](http://www.jianshu.com/p/325a7efd5d0d) 55 | 制作一个自定义全键盘 56 | 57 | ![Android自定义全键盘](http://upload-images.jianshu.io/upload_images/3866329-b3db6646a9484aaa.gif?imageMogr2/auto-orient/strip) 58 | 59 | ## 开源库&项目&工具 60 | #### 1. [litho](http://fblitho.com) 61 | A declarative framework for building efficient UIs on Android. http://fblitho.com 62 | 63 | #### 2. [litho-picasso](https://github.com/charbgr/litho-picasso) 64 | Picasso image-loading Component for Litho 65 | 66 | #### 3. [AwesomeQRCode](https://github.com/SumiMakito/AwesomeQRCode) 67 | 一个优雅的(不起眼的) QR 二维码生成器 68 | 69 | ![AwesomeQRCode](https://raw.githubusercontent.com/SumiMakito/AwesomeQRCode/master/art/awesome-qr-1.png) 70 | 71 | #### 4. [MeiTuan](https://github.com/huanxsd/MeiTuan) 72 | 高仿美团客户端React-Native版,支持iOS、Android。 73 | 74 | ## 联系方式 75 | * Email:yanghui1986527#gmail.com 76 | * Github: https://github.com/snowdream 77 | * Blog: http://snowdream.github.io/blog/ 78 | * 简书:http://www.jianshu.com/u/748f0f7e6432 79 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 80 | * QQ群: 529327615 81 | * 微信公众号: sn0wdr1am 82 | 83 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 84 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#7.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#7 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。 4 | 5 | ## 业界新闻 6 | #### 1. [Kotlin 1.1 正式版来了,基于 JVM 的编程语言](https://www.oschina.net/news/82431/kotlin-1-1) 7 | 开发团队宣布,Kotlin 1.1 正式发布。 这是一个很大的进步,使 Kotlin 能在许多新的场景中使用。 8 | 9 | Kotlin 的愿景是在现代应用程序的所有组件中使用单一的表达式,高性能的强类型语言。 Kotlin 1.1 为实现这一目标迈出了两大步。 10 | 11 | #### 2. [React Native 0.42.0 正式发布,大量修复和改进](https://www.oschina.net/news/82455/react-native-0-42-0) 12 | 重大更新: 13 | 14 | Android 15 | 16 | * windowSoftInputMode for new apps:使用 react-native init 创建的所有新应用程序都将具有 windowSoftInputMode:adjustResize 而不是 adjustUnspecified,这已设为默认值。 这种改变使得 Android 上的键盘处理变得自动化,并且不需要任何 Javascript 解决方案。 17 | 18 | * (Re)move JSBundleLoader.getSourceUrl() 19 | 20 | * 移除 RecyclerViewBackedScrollView:RecyclerViewBackedScrollView 是很久以前添加的,为了解决数据添加错误,但现在该问题已经直接在开源和内部的 ScrollView(ReactScrollView.java)中修复。 21 | 22 | Android&iOS 23 | 24 | * 改进变换属性的验证:这个提交改进了在 Javascript 侧完成的变换对象的验证,并且使其更严格。在此更改中,确保JS验证与本机验证相同或更严格,以确保跨平台获得一致的错误。 25 | 26 | ## Android开发 27 | #### 1. [GDE专栏 | Android Things开发环境搭建](http://t.cn/RiMpKzb) 28 | 物联网 (IoT) 的应用开发,离不开跟开发板打交道,我们需要配置好开发板的各种环境,最后才能用 Android Studio 进行应用开发。 29 | 30 | 我们今天就以 Raspberry Pi 3 为例,一起来搭建 Android Things 的开发环境。 31 | 32 | #### 2. [内存泄漏全解析](http://t.cn/RiMpgMY) 33 | 对于 C++ 来说,内存泄漏就是new出来的对象没有 delete,俗称野指针;而对于 java 来说,就是 new 出来的 Object 放在 Heap 上无法被GC回收;而这里就把我之前的一篇内存泄漏的总结翻新,做一个更加全面规范的讲解,希望能帮到各位。 34 | 35 | #### 3. [Google VR for Android 敲门](http://www.jianshu.com/p/7867fe980fb4) 36 | 虚拟现实(Virtual Reality)技术是一种可以创建和体验虚拟世界的计算机仿真系统,最近几年虚拟现实概念很火,技术上也有很多突破。Google、苹果等顶级互联网公司都进行了大手笔的投入。本文是一篇介绍如何在Android手机上运行、开发VR程序的基础教程。 37 | 38 | #### 4. [深度了解Android 7.0 ,你准备好了吗?](http://mp.weixin.qq.com/s/8Nouh0ZZklqjxfachhoA-g) 39 | 2016年8月22日,谷歌正式推送Android 7.0 Nougat(牛轧糖)正式版,他们还会三个月一次推送开发版,而曝光的消息看,第一个开发版就是Android 7.1,Android N主要新增了以下的新特性和优化。Android N 增加了许多新的notifications API,进行了重新的设计,引入了新的风格。1.模板更新:开发者将能够充分利用新模板,只需进行少量的代码调整。2.消息样式自定义:可以自定义更多与使用MessageStyle类的通知相关的用户界面标签。可以配置消息、会话标题和内容视图。 40 | 41 | #### 5. [蘑菇街Android热修复探索之路](http://mp.weixin.qq.com/s/GuzbU1M1LY1VKmN7PyVbHQ) 42 | 文章包含三部分:1.业界各方案简介;2.蘑菇街HotFix:Q-Zone篇,介绍ART Runtime对Q-Zone方案的限制;3.蘑菇街HotFix:Aceso篇,介绍Aceso在InstantRun方案上的各种优化。业界各方案简介 在Dalvik时代,只有Dexposed跟Q-Zone两家的方案,进入ART时代后各种Android热修复方案如雨后春笋般冒出来。 43 | 44 | ## 开源库&项目&工具 45 | #### 1. [MaterialDrawer 5.8.2 发布,Android 侧滑显示控件](https://www.oschina.net/news/82351/materialdrawer-5-8-2) 46 | MaterialDrawer 5.8.2 发布了,MaterialDrawer 是一个类似 Google 官方 NavigationView 侧滑显示控件, 能够实现跟 NavigationView 一样的效果, 同时还支持自定义效果, 自由度非常高。 47 | 48 | #### 2. [gradle-completion](https://github.com/eriwen/gradle-completion) 49 | Gradle tab completion for bash and zsh 50 | ![gradle-completion](https://raw.githubusercontent.com/eriwen/gradle-completion/master/gradle-completion-short.gif) 51 | 52 | #### 3. [gradle-tips](https://github.com/shekhargulati/gradle-tips) 53 | In this document, I will list down tips that I have learnt over last year or so. 54 | 55 | #### 4. [开源许可协议了解这些就够了](http://t.cn/RiM0UCJ) 56 | 现今存在的开源协议很多,可以在(http://www.opensource.org/licenses/alphabetical )详细查看。我们最常用到的开源协议有6种,这些都是OSI 批准的协议,也是绝大多数公司会用到的协议。 57 | 58 | #### 5. [Fragmentation](https://github.com/YoKeyword/Fragmentation) 59 | A powerful library that manage Fragment for Android! 60 | 61 | #### 6. [AndroidIconAnimator](https://github.com/romannurik/AndroidIconAnimator) 62 | A web-based tool that lets you design icon animations and other animated vector art for Android. Exports to Animated Vector Drawable format for Android. 63 | 64 | #### 7. [geometric-progress-view](https://github.com/vbohush/geometric-progress-view) 65 | Customizable progress indicator in the form of 2D geometric shapes 66 | 67 | ![geometric-progress-view](https://github.com/vbohush/geometric-progress-view/raw/master/screenshot/screenshot.gif) 68 | 69 | ## 联系方式 70 | * Email:yanghui1986527#gmail.com 71 | * Github: https://github.com/snowdream 72 | * Blog: http://snowdream.github.io/blog/ 73 | * 简书:http://www.jianshu.com/u/748f0f7e6432 74 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 75 | * QQ群: 529327615 76 | * 微信公众号: sn0wdr1am 77 | 78 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 79 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#21.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#21 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | 7 | #### 1. [GMTC 2017 即将来袭!完整日程公布](http://t.cn/RSjeBCf) 8 | 再过一天,第二届 GMTC 全球移动技术大会就即将开始了,本届内容更加丰富,横跨移动开发、前端开发、大前端、AR/VR、移动 AI 多个主题,关注前沿技术和一线实践,给参会者送上精彩的大餐。 9 | 10 | #### 2. [17 位谷歌 Android 开发专家是如何看待 Kotlin 的?](https://www.oschina.net/news/85468/what-do-17-google-developers-experts-for-kotlin) 11 | 我联系了一些这样的 Android 专家,我得到了来自 17 位的答复。我只是要求他们告诉我们关于 Kotlin 的一点想法,答案显然是未经过修改的,所以你可以发现支持和反对(或者不那么支持)的声音。 12 | 13 | #### 3. [为什么你该摒弃 Java ,全面转向 Kotlin 语言?](https://www.oschina.net/news/85488/why-you-should-totally-switch-to-kotlin) 14 | 我想告诉你一个名为 Kotlin 的新的编程语言,以及为什么你要开始考虑使用它来开发你的下一个项目。我以前喜欢 Java ,但是去年我发现了 Kotlin ,只要有可能我就会用 Kotlin 来写代码。现在我实在无法想象有什么地方只有 Java 能做,而 Kotlin 不能的。 15 | 16 | ## Android开发 17 | #### 1. [Zygote与内存](https://ivonhoe.github.io/2017/04/26/Zygote-2/) 18 | 当使用BitmapAnalyzer分析一个Android5.0+的Hello World App时你会dump出400+张图片,什么是BitmapAnalyzer?请看Android Bitmap的内存大小是如何计算的?这篇文章的介绍。分析仔细看一下可以发现,这些都是Android系统的主题资源图片,为什么会有这么多主题资源被加载?是不是选择其他的theme这些资源是会改变?不需要的无用资源能否避免被加载?How?毕竟单单Resources中sPreloadedDrawables所引用的Drawable就会占用10M以上的内存空间。 19 | 20 | #### 2. [Handler的内存泄露及解决方法](http://dalufan.com/2015/08/28/android-handler-gc/) 21 | 常见的Handler的用法但是可能导致内存泄露,比如在旋转屏幕时该Activity重新绘制. 但是因为mHandler发送了一个延迟消息,所以消息队列持有mHandler对象,又由于new Runnable(){}持有外部类MainActivity的引用,以Activity所占内存并不能向期望的那样被回收,这样就可能会造成内存泄漏。 22 | 23 | #### 3. [Android Handler Memory Leaks](http://techblog.badoo.com/blog/2014/08/28/android-handler-memory-leaks/) 24 | Android uses Java as a platform for development. This helps us with many low level issues including memory management, platform type dependencies, and so on. However we still sometimes get crashes with OutOfMemory. So where’s the garbage collector? 25 | 26 | #### 4. [学 Kotlin,看这一篇就够了](http://www.jianshu.com/p/51b404a155a4) 27 | Kotlin学习资源合辑 28 | 29 | #### 5. [Android热修复升级探索(二)](http://t.cn/RSjD5zg) 30 | Android资源的热修复,就是在app不重新安装的情况下,利用下发的补丁包直接更新本app中的资源。 31 | 32 | 我们在开发阿里云移动热修复(Sophix)的过程中,对Android资源的加载原理做了深入的探究,最终在资源修复方法上取得了突破性进展!新的资源修复方法不论是在使用便捷性、补丁包大小以及运行时效率方面,相比其他实现都有巨大的优势。 33 | 34 | #### 6. [【翻译】安卓架构组件(1)-App架构指导](http://www.jianshu.com/p/349f4791a668) 35 | #### 7. [【翻译】安卓架构组件(2)-添加组件到你的项目中](http://www.jianshu.com/p/e4319fc52227) 36 | #### 8. [【翻译】安卓架构组件(3)-处理生命周期](http://www.jianshu.com/p/5ada0d48855f) 37 | #### 9. [【翻译】安卓架构组件(4)-LiveData](http://www.jianshu.com/p/13a855ceaf2b) 38 | #### 10. [【翻译】安卓架构组件(5)-ViewModel](http://www.jianshu.com/p/e61f045126f7) 39 | #### 11. [【翻译】安卓架构组件(6)-Room持久化类库](http://www.jianshu.com/p/587f48dccf0a) 40 | 41 | ## 专题栏目 - HTML JavaScript CSS 42 | #### 1. [HTML 教程](http://www.runoob.com/html/html-tutorial.html) 43 | #### 2. [HTML5 教程](http://www.runoob.com/html/html5-intro.html) 44 | #### 3. [CSS 教程](http://www.runoob.com/css/css-tutorial.html) 45 | #### 4. [CSS3 教程](http://www.runoob.com/css3/css3-tutorial.html) 46 | #### 5. [JavaScript 教程](http://www.runoob.com/js/js-tutorial.html) 47 | #### 6. [Bootstrap 教程](http://www.runoob.com/bootstrap/bootstrap-tutorial.html) 48 | #### 7. [Vue.js 教程](http://www.runoob.com/vue2/vue-tutorial.html) 49 | #### 8. [ECMAScript 6 入门](http://es6.ruanyifeng.com) 50 | 《ECMAScript 6 入门》是一本开源的 JavaScript 语言教程,全面介绍 ECMAScript 6 新引入的语法特性。 51 | ## 开源库&项目&工具 52 | #### 1. [JAndFix](https://github.com/qiuba/JAndFix) 53 | JAndFix is a tool for Android real-time hot fix base on JAVA. 54 | 55 | #### 2. [MaterialChipsInput](https://github.com/pchmn/MaterialChipsInput) 56 | Implementation of Material Design Chips component for Android 57 | 58 | #### 3. [PasscodeView](https://github.com/hanks-zyh/PasscodeView) 59 | Material Design PasscodeView for Android. 60 | 61 | #### 4. [Timeline-View](https://github.com/vipulasri/Timeline-View) 62 | Android Timeline View is used to display views like Tracking of shipment/order, steppers etc. 63 | 64 | ## 联系方式 65 | * Email:yanghui1986527#gmail.com 66 | * Github: https://github.com/snowdream 67 | * Blog: http://snowdream.github.io/blog/ 68 | * 简书:http://www.jianshu.com/u/748f0f7e6432 69 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 70 | * QQ群: 529327615 71 | * 微信公众号: sn0wdr1am 72 | 73 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 74 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#20.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#20 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [Java 9 又要推迟了,Java 首席架构师是这样解释的](http://t.cn/RSJ0UYS) 7 | 甲骨文 Java 平台组首席架构师 Mark Reinhold 提议「调整发布日期,以多给 JCP 一些时间」。Java 9 的发布时间往后推迟 8 周,也就是到 9 月 21 日发布。 8 | 9 | ## Android开发 10 | #### 1. [我一行代码都不写实现Toolbar!你却还在封装BaseActivity?](http://www.jianshu.com/p/75a5c24174b2) 11 | 说说怎么在不使用继承的情况下让 Activty 一行代码都不写就能实现 Toolbar。 12 | 13 | #### 2. [PermissionsDispatcher,Android 6.0 运行时权限](http://www.jianshu.com/p/64e7334cde11) 14 | 运行时权限的加入增加了用户隐私的安全,但同时也给开发者带来了一些负担,因为多了检查权限,请求权限,处理权限请求响应的步骤。 15 | 于是就出现了一些框架,用于简化运行时权限的处理,如 PermissionsDispatcher,Dexter,RxPermissions,easypermissions 等。 16 | 17 | #### 3. [Android 光传感器开发详细教程](http://www.jianshu.com/p/bb3952ff2324) 18 | 光线感应器( Light Sensor ):光传感器主要用来检测手机周围光的强度,与其他传感器不同的是,该传感器监测手机周围光的强度,且单位为 lux。光传感器的开发与其他各种传感器的开发步骤基本相同,只是监测的是 Sensor.TYPE_LIGHT。如果学会了光感器的开发,开发其他的传感器则只需要改变监听器对象及注册监听的方法,然后根据每个人不同的业务需求,来修改后续的逻辑。 19 | 20 | #### 4. [Android 动画:手把手教你使用 补间动画](http://www.jianshu.com/p/733532041f46) 21 | 本文将详细介绍 Android 动画中 补间动画的原理 & 使用 22 | 23 | #### 5. [小程序组件化框架 WePY 在性能调优上做出的探究](http://t.cn/RSJ09ij) 24 | 本文旨在介绍两点在小程序开发过程当中碰到的一些性能问题以及 WePY 的一些优化方案。 25 | 26 | #### 6. [触动时刻:移动应用成功秘诀(一)](http://t.cn/RSJpdaB) 27 | “触动时刻” 是一个个决定如今消费行为至关重要的 “触点”,只有尽可能多地在这些触点上打动消费者,才能最终决定他们的去向。 28 | 29 | ## 专题栏目 - Annotation-Processing-Tool 30 | #### 1. [ANNOTATION PROCESSING 101](http://hannesdorfmann.com/annotation-processing/annotationprocessing101) 31 | In this blog entry I would like to explain how to write an annotation processor. So here is my tutorial. First, I am going to explain to you what annotation processing is, what you can do with that powerful tool and finally what you cannot do with it. In a second step we will implement a simple annotation processor step by step. 32 | 33 | #### 2. [Annotation-Processing-Tool详解](http://www.open-open.com/lib/view/open1470735314518.html) 34 | 在这篇文章中我将阐述如何实现一个注解处理器。首先我将向你解释什么是注解处理器,你可以使用这个强大的工具来做什么及不能做什么。接下来我们将一步一步来实现一个简单的注解处理器。 35 | 36 | #### 3. [Android注解使用之注解编译android-apt如何切换到annotationProcessor](http://www.cnblogs.com/whoislcj/p/6148410.html) 37 | 自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不再维护该工具了,因为Android Studio推出了官方插件,并且可以通过gradle来简单的配置,它就是annotationProcessor,今天来学习一下如何将原来的android-apt切换到annotationProcessor。 38 | 39 | #### 4. [Java注解处理器](https://race604.com/annotation-processing/) 40 | Java中的注解(Annotation)是一个很神奇的东西,特别现在有很多Android库都是使用注解的方式来实现的。一直想详细了解一下其中的原理。很有幸阅读到一篇详细解释编写注解处理器的文章。本文的原文是ANNOTATION PROCESSING 101,作者是Hannes Dorfmann。这是一篇好文,忍不住翻译学习一下。以下是翻译。(注:本文的翻译已经获得了作者 Hannes 的授权。) 41 | 42 | #### 5. [Android公共技术点之二-Annotation Processing Tool](http://yeungeek.com/2016/04/27/Android公共技术点之二-Annotation-Processing-Tool/) 43 | 在技术点之一中介绍到编译时注解,使用APT工具进行自动解析,这次介绍的就是Annotation Processing Tool 44 | 45 | #### 6. [JavaPoet的基本使用](http://blog.csdn.net/crazy1235/article/details/51876192) 46 | JavaPoet 是一个用来生成 .Java源文件的Java API。 47 | 当做如注解或者数据库模式、协议格式等事情时,生成源文件就比较有用处。 48 | 49 | ## 开源库&项目&工具 50 | #### 1. [kotlin-statistics](https://github.com/thomasnield/kotlin-statistics) 51 | Idiomatic statistical operators for Kotlin 52 | 53 | #### 2. [from-java-to-kotlin](https://github.com/MindorksOpenSource/from-java-to-kotlin) 54 | From Java To Kotlin - Your Cheat Sheet For Java To Kotlin 55 | 56 | #### 3. [kotterknife](https://github.com/JakeWharton/kotterknife) 57 | View "injection" library for Android 58 | 59 | #### 4. [kotlin-options](https://github.com/peter-tackage/kotlin-options) 60 | Kotlin Options with functional operators made using sealed classes 61 | 62 | #### 5. [android-mvp-kotlin-starter](https://github.com/ravidsrk/android-mvp-kotlin-starter) 63 | An MVP Boilerplate to save me having to create the same project over from scratch every time! 64 | 65 | #### 6. [gradle-script-kotlin](https://github.com/gradle/gradle-script-kotlin) 66 | Kotlin language support for Gradle build scripts 67 | 68 | ## 联系方式 69 | * Email:yanghui1986527#gmail.com 70 | * Github: https://github.com/snowdream 71 | * Blog: http://snowdream.github.io/blog/ 72 | * 简书:http://www.jianshu.com/u/748f0f7e6432 73 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 74 | * QQ群: 529327615 75 | * 微信公众号: sn0wdr1am 76 | 77 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 78 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#19.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#19 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | ![640.jpeg](http://upload-images.jianshu.io/upload_images/66954-d54b6266f0a8ba87.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 7 | #### 1. [活动报名 | 走进阿里:Android 开发者沙龙](http://t.cn/RSzdbuW) 8 | 据官方数据Android 在全球已经激活 20 亿部设备,伴随着Android O Pre 2发布,Kotlin 成为 Android 官方编程语言, AI 时代的到来……这是 Android 开发者的狂欢还是梦魇,Android 开发的未来路在何方?Android 开发者又该做哪些技术储备和转型? 9 | 安卓绿色联盟携手阿里巴巴、华为共同举办"走进阿里:Android开发者沙龙",于6月17日在杭州阿里巴巴西溪园区召开,邀请安卓开发者们欢聚一堂,共同交流探讨。 10 | 11 | #### 2. [Android 免安装应用对所有开发者开放。立即开始构建免安装应用!](http://developers.googleblog.cn/2017/05/android.html) 12 | 今年早些时候,我们开始测试 Android 免安装应用,这是一种全新的 Android 应用,无须安装即可运行。感谢我们杰出的开发者社区,我们收到了大量反馈意见,帮助我们优化端到端的产品体验。 13 | 14 | #### 3. [Android 出现了一款恶意软件,也能够勒索人](https://www.oschina.net/news/85216/malicious-software-on-android) 15 | 上次 WannaCry 勒索病毒席卷全球后,Windows XP 和未安装更新的 Windows 电脑遭遇了前所未有的安全问题。当然,这一事件有好有坏,好的一面也促使了更多的用户开始关注电子设备的安全问题。 16 | 17 | 现在,另一个安全问题出现在了全球手机操作系统占有率高达 86.1% 的 Android 上。 18 | 19 | #### 4. [Tinker 1.7.11 发布,微信开源的 Android 热修复框架](https://www.oschina.net/news/85160/tinker-1-7-11) 20 | Tinker 1.7.11 版本已发布,该版本是对前两天发布的 1.7.10 版本的修补。 21 | 1.7.11 更新内容: 22 | * 修复1.7.10 版本替换 AndroidNClassloader 时可能产生 found duplicate classes warning f3e2f5d 23 | * 修复自动 keep main dex pattern 中的问题,将 () 改为 (...) 492d6f 24 | * Tinker 增加回退补丁的接口 855084 25 | 26 | ## Android开发 27 | #### 1. [官方详细介绍Android Studio 3.0 Canary 1](http://t.cn/RSzBMsE) 28 | 为加快您的开发流,Android Studio 3.0 包含了三大主要功能: 29 | * 一套全新的应用性能分析工具,用于快速诊断性能问题; 30 | * 支持 Kotlin 编程语言; 31 | * 加快大规模应用项目的 Gradle 构建速度。 32 | 33 | #### 2. [教你如何自定义数字会滚动的TextView](http://t.cn/RSzrE4J) 34 | NumberRunningTextView 是一个自带数字滚动动画的 TextView,通过使用 setContent(String str)方法,传入相应的金额数字字符串(如”1354.00”),或者数字的字符串(如200),当页面初始化完成的时候,就可以看到数字滚动的效果,和支付宝中进入余额宝界面,显示余额滚动的效果类似。 35 | 36 | #### 3. [【测试左移专栏】测试左移实践探讨 ——测试左移在腾讯地图SDK的实践](http://t.cn/RSzg29S) 37 | 我理解的"测试左移",即将测试活动与开发活动结合更加紧密, 同步于开发活动甚至早于开发活动便开始的质量保障活动。业界已有关于测试前置的一些讨论, 因此本文也沿用测试前置的概念. 本文将讲解测试前置在腾讯地图SDK的实践情况。鉴于APP与SDK的不同形式,APP类产品在实践测试前置方法时需做适当调整。 38 | 39 | #### 4. [Android下玩JNI的新老三种姿势](http://t.cn/RSzgdSD) 40 | Android下玩JNI的新老三种姿势 41 | 42 | #### 5. [BlockCanaryEx](https://github.com/seiginonakama/BlockCanaryEx/blob/master/README_ZH.md) 43 | 记录主线程中执行的所有方法和它们的执行时间,当app卡顿时,将所有耗时方法直接展示给开发者,节省开发者定位卡顿问题的时间。 此项目基于 BlockCanary。 44 | 45 | #### 6. [Android截屏与WebView长图分享经验总结](http://mp.weixin.qq.com/s/wzx_ubix0ys50nxT_-JdMA) 46 | 最近在做新业务需求的同时,我们在 Android 上遇到了一些之前没有碰到过的问题,截屏分享、 WebView 生成长图以及长图在各个分享渠道分享时图片模糊甚至分享失败等问题,在这过程中踩了很多坑,到目前为止绝大部分的问题都还算是有了比较满意的解决方案。以下就从三个方面来总结一下过程中遇到的挑战和最后的解决方案。 47 | 48 | 49 | ## 开源库&项目&工具 50 | #### 1. [Android 本地图片、视频选择器 Matisse](https://github.com/zhihu/Matisse) 51 | Matisse 是知乎开源的一个漂亮的 Android 本地图片、视频选择器。其主要功能有: 52 | * 选择包括 JPEG、PNG、GIF 格式的图片和 MPEG、MP4 格式的视频 53 | * 支持自定义主题,包括两个内置的主题 54 | * 不同的图片加载器 55 | * 定义自定义过滤规则 56 | * 在 Activities 和 Fragments 中使用良好 57 | ![Matisse](https://static.oschina.net/uploads/space/2017/0524/153616_onNA_2896879.png) 58 | 59 | #### 2. [2017 春季最酷的 30 个 Android 库 【已翻译100%】](https://www.oschina.net/translate/30-new-android-libraries-released-in-the-spring-of-2017?lang=chs&page=1#) 60 | ![Spruce Android Animation Library ](https://static.oschina.net/uploads/space/2017/0523/111916_KknX_2896879.gif) 61 | 62 | #### 3. [多页面切换场景统一解决方案 UltraViewPager ](https://github.com/alibaba/UltraViewPager) 63 | UltraViewPager 是阿里开源的一个封装多种特性的 ViewPager ,主要是为多页面切换场景提供统一解决方案。 64 | 主要功能: 65 | * 支持横向滑动/纵向滑动 66 | * 支持一屏内显示多页 67 | * 支持循环滚动 68 | * 支持定时滚动,计时器使用 Handler 实现 69 | * 支持设置 ViewPager 的最大宽高 70 | * setRatio 按比例显示 UltraviewPager 71 | * 内置 indicator ,只需简单设置几个属性就可以完成展示,支持圆点和 Icon; 72 | * 内置两种页面切换动效 73 | ![多页面切换场景统一解决方案 UltraViewPager](https://static.oschina.net/uploads/space/2017/0523/141236_iJ05_2896879.gif) 74 | 75 | #### 4. [android-instant-apps](https://github.com/googlesamples/android-instant-apps) 76 | Android Instant Apps 的例子项目 77 | 78 | #### 5. [Kotlin第三方中文网站](https://www.kotlincn.net) 79 | Kotlin第三方中文网站,资料可能比官网稍旧。 80 | 81 | ## 联系方式 82 | * Email:yanghui1986527#gmail.com 83 | * Github: https://github.com/snowdream 84 | * Blog: http://snowdream.github.io/blog/ 85 | * 简书:http://www.jianshu.com/u/748f0f7e6432 86 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 87 | * QQ群: 529327615 88 | * 微信公众号: sn0wdr1am 89 | 90 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 91 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#23.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#23 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [增加新的 Brotli 压缩算法](http://t.cn/RoIfzxb) 7 | 最近,我们宣布为 Google AMP Cache 增加新的 Brotli 压缩算法。现在,通过 Google AMP Cache 缓存的所有 AMP 文档均可通过 Brotli 进行压缩,这将为我们的用户节省大量带宽,有助于推动实现我们改善移动体验的目标。 8 | 9 | #### 2. [又一第三方 ROM 死亡,Tencent OS 6月28日停止服务](https://www.oschina.net/news/86078/tencent-os-be-discontinued-on-june-28th) 10 | 据 TechWeb 报道,昨日晚间腾讯管理员在论坛宣布 Tencent OS 将在 6 月 28 日停止服务,并表示请用户尽快保存数据信息。对于停服原因,腾讯 Tencent OS 称是因为第三方 ROM 市场萎缩。 11 | 12 | #### 3. [Blockly 1.0 正式版发布,Google 可视化编程工具](https://www.oschina.net/news/86016/blockly-1-0) 13 | Blockly 是 Google 开源的一个基于 Web 的可视化编辑器,只需要拖动几个图形就可以编程。Blockly 1.0 主要面向 Android 和 iOS 移动端。 14 | 15 | ## Android开发 16 | #### 1. [Android 混淆那些事儿](http://t.cn/RoIfkxC) 17 | 本文主要讲述了代码混淆和资源混淆的原理,Studio默认的混淆方案,混淆的参数,以及如何对Apk进行代码混淆(自定义混淆文件)和资源混淆(结合微信混淆和美团混淆两种方案),避免Apk被逆向。 18 | 19 | #### 2. [reCAPTCHA Android API 简介](http://t.cn/RoIfqzn) 20 | 十年前,我们发布了 reCAPTCHA,那时,我们设定了一个简单的目标:让用户能够放心地访问他们喜爱的网站,而不必担心垃圾邮件和滥用行为。十年来,reCAPTCHA 发生了不小的改变。它从针对街道号码和名称的变形文本发展到 2014 年的无人机识别系统 reCAPTCHA,再到今年 3 月份的不可见 Invisible reCAPTCHA。 21 | 22 | ![reCAPTCHA Android API 简介](http://bp.googleblog.cn/-8XZF7G6MPgw/WTmj2gekLxI/AAAAAAAABJY/WBN6YTzZ7B0ohNIzPIdmd84mUie_ZXppgCLcB/s1600/image2.gif) 23 | 24 | #### 3. [GET 和 POST 有什么区别?及为什么网上多数答案都是错的](http://t.cn/RoIIDL0) 25 | 如果有人问你,GET和POST,有什么区别?你会如何回答? 26 | 27 | #### 4. [Android热修复升级探索(三)](http://t.cn/RoIMmQD) 28 | 对于Android下的冷启动类加载修复,最早的实现方案是QQ空间提出的dex插入方案。该方案的主要思想,就是把插入新dex插入到ClassLoader索引路径的最前面。这样在load一个class时,就会优先找到补丁中的。后来微信的Tinker和手Q的QFix都基于该方案做了改进,而这类插入dex的方案,都会遇到一个主要的问题,就是如何解决Dalvik虚拟机下类的pre-verify问题。 29 | 30 | #### 5. [Android增量代码测试覆盖率工具](http://t.cn/RoIxCpi) 31 | 美团点评业务快速发展,新项目新业务不断出现,在项目开发和测试人员不足、开发同学粗心的情况下,难免会出现少测漏测的情况,如何保证新增代码有足够的测试覆盖率是我们需要思考的问题。 32 | 33 | #### 6. [Java线程通信(Thread Signaling)](http://www.jianshu.com/p/5b9fdae43335) 34 | 线程通信的目的就是让线程间具有互相发送信号通信的能力。 35 | 而且,线程通信可以实现,一个线程可以等待来自其他线程的信号。举个例子,一个线程B可能正在等待来自线程A的信号,这个信号告诉线程B数据已经处理好了。 36 | 37 | #### 7. [Android 之 Shader 用法详细介绍](http://www.jianshu.com/p/83af13b41bb6) 38 | Shader 是Android中非常重要的一个类 一般称之为着色器,其作用是用来给图像着色,我们一般在自定义View的时候通过paint.setShader(Shader shader)使用比较多 Shader有五个子类 下面将对每个API的使用做详细介绍 39 | 40 | ## 专题栏目 - HotFix 41 | #### 1. [HotFix原理介绍及使用总结](http://www.jianshu.com/p/6f0ae1e364d9) 42 | 以补丁的方式动态修复紧急Bug,不再需要重新发布App,不再需要用户重新下载,覆盖安装(来自:安卓App热补丁动态修复技术介绍) 43 | 44 | #### 2. [Tinker -- 微信Android热补丁方案](https://github.com/Tencent/tinker/wiki) 45 | Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。当然,你也可以使用Tinker来更新你的插件。 46 | 47 | #### 3. [Alibaba-AndFix Bug热修复框架原理及源码解析](http://blog.csdn.net/qxs965266509/article/details/49816007) 48 | AndFix的原理就是方法的替换,把有bug的方法替换成补丁文件中的方法。 49 | 50 | #### 4. [Amigo](https://github.com/eleme/Amigo/wiki) 51 | Amigo 原理与 QQZone 的方案有些类似,QQZone,Tinker,Nuwa这类方案是通过修改PathClassLoader中的dex实现的,Amigo则是釜底抽薪直接替换ClassLoader。 52 | 53 | #### 5. [安卓App热补丁动态修复技术介绍](http://t.cn/RGNTNKm) 54 | 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙得焦头烂额:重新打包App、测试、向各个应用市场和渠道换包、提示用户升级、用户下载、覆盖安装。有时候仅仅是为了修改了一行代码,也要付出巨大的成本进行换包和重新发布。 55 | 56 | #### 6. [QFix探索之路——手Q热补丁轻量级方案](http://t.cn/RoIr3jK) 57 | QFix 是手Q团队近期推出的一种新的 Android 热补丁方案,在不影响 app 运行时性能(无需插桩去 preverify)的前提下有效地规避了 dalvik 下”unexpected DEX”的异常,而且还是很轻量级的实现:只需调用一个很简单的方法就能办到。 58 | 59 | #### 7. [阿里震撼业界—推出首个非侵入式热修复方案Sophix,颠覆移动端传统发版更新流程!](http://t.cn/RoId5mP) 60 | 2017年6月11日,手淘技术团队联合阿里云正式发布了史上首个非侵入式移动热更新解决方案——Sophix。 61 | 62 | ## 开源库&项目&工具 63 | #### 1. [【干货】github上十二款最著名的Android播放器开源项目](http://t.cn/RoIMqtY) 64 | Ijkplayer 是Bilibili发布的基于 FFplay 的轻量级 Android/iOS 视频播放器。实现了跨平台功能,API 易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电;提供 Android 平台下应用弹幕集成的解决方案。 65 | 66 | #### 2. [2017 上半年最酷,最受欢迎的30 个 Android 库](http://t.cn/RoIx5t6) 67 | 我从 《The 30 Coolest Android Libraries from Spring 2017》这篇文章中的 30 个最酷的 Android 库挑了几个我感觉比较好玩的几个 Android 库分享给大家。如果想看完整的 30 个库,可以点击“阅读原文”查看。 68 | 69 | #### 3. [blockly-android](https://github.com/google/blockly-android) 70 | Blockly for Android 71 | 72 | #### 4. [LICEcap](http://www.cockos.com/licecap/) 73 | simple animated screen captures 74 | 75 | ## 联系方式 76 | * Email:yanghui1986527#gmail.com 77 | * Github: https://github.com/snowdream 78 | * Blog: http://snowdream.github.io/blog/ 79 | * 简书:http://www.jianshu.com/u/748f0f7e6432 80 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 81 | * QQ群: 529327615 82 | * 微信公众号: sn0wdr1am 83 | 84 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 85 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#4.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#4 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。 4 | 5 | ## 业界新闻 6 | #### 1. [谷歌I/O 2017大会日期地址公布:5月17日举办](http://www.ithome.com/html/android/290578.htm) 7 | 根据官方推特分析,Google I/O 2017开发者大会将于5月17日至19日,于加州山景城的露天剧场举办。谷歌I/O官网上目前还没有更新有关2017年大会的消息,应该将在不久后进行更新。 8 | 9 | #### 2. [OPPO首超华为,成国内智能机年度出货冠军!小米暴降36%](http://t.cn/RJZOfIf) 10 | 国际数据公司(IDC)最新发布的手机季度跟踪报告显示,2016年第四季度,中国智能手机市场出货量同比增长18.7%。OPPO、华为、Vivo成为中国智能手机市场出货量前三,其中OPPO的增长量达到了109.2%。 11 | 12 | #### 3. [网易或在中国运营谷歌应用商店,已经开始谈判](https://view.inews.qq.com/a/TEC2017020700552607) 13 | 据外媒最新消息,谷歌正在和中国互联网公司网易进行接触,谷歌可能通过网易在中国经营Play商店。网易和谷歌目前正在就此事进行磋商,但是双方是否会达成合作尚未可知。谷歌母公司Alphabet的董事长施密特此前曾经表示,在中国市场,谷歌需要寻找到一个商业伙伴来开展自身的一些业务,尤其是负责和政府监管部门之间的沟通。 14 | 15 | ## Android开发 16 | #### 1. [Android硬件加速原理与实现简介](http://tech.meituan.com/hardware-accelerate.html) 17 | 在手机客户端尤其是Android应用的开发过程中,我们经常会接触到“硬件加速”这个词。由于操作系统对底层软硬件封装非常完善,上层软件开发者往往对硬件加速的底层原理了解很少,也不清楚了解底层原理的意义,因此常会有一些误解,如硬件加速是不是通过特殊算法实现页面渲染加速,或是通过硬件提高CPU/GPU运算速率实现渲染加速。 18 | 19 | #### 2. [聊聊clean code](http://tech.meituan.com/clean-code.html) 20 | clean code,顾名思义就是整洁的代码,或者说清晰、漂亮的代码,相信大多数工程师都希望自己能写出这样的代码。也许这是个千人千面的话题,每个工程师都有自己的理解。比如我,从一个天天被骂代码写得烂的人,逐渐学习成长,到现在也能写的出“人模人样”的代码来了。这期间算是积累了一点经验心得,想和大家分享,抛砖引玉。本文主要针对面向对象编程的clean code来阐述,面向过程代码的思路会比较不同,不在本文的讨论范畴。 21 | 22 | #### 3. [Android 内存泄漏分析心得](http://t.cn/RMdiwom) 23 | 对于C++来说,内存泄漏就是new出来的对象没有delete,俗称野指针;对于Java来说,就是new出来的Object 放在Heap上无法被GC回收;本文通过QQ和Qzone中内存泄漏实例来讲android中内存泄漏分析解法和编写代码应注意的事项。 24 | 25 | #### 4. [Android动态库压缩壳的实现](http://t.cn/RMdJ8T9) 26 | 说起壳可能有的同学并不太了解,简单的说,计算机软件领域所说的壳实际上是一种软件加密技术。与自然界中的壳类似,花生用壳保护种子,乌龟用壳保护自己的身体,而我们写的程序为了在一定程度上防止被逆向分析,也可以给它加壳。壳主要分为两大类:加密壳和压缩壳,加密壳侧重于防止软件被篡改,而压缩壳则侧重于减小软件体积。其实,在Windows上已经有许多壳了,但Android(或者可以说Linux)上的壳相对而言就少了一些。本文就主要讲讲Android动态库(so文件)压缩壳要如何实现。 27 | 28 | #### 5. [Espresso浅析和使用](http://t.cn/RMdJ9oB) 29 | Espresso是一个Google官方提供的Android应用UI自动化测试框架。Google希望,当Android的开发者利用Espresso写完测试用例后,能一边看着测试用例自动执行,一边享受一杯香醇Espresso(浓咖啡)。Espress有3个特点:1.第一个收录在Android Testing Supporting Library底下的测试框架; 2.模拟用户的操作;3.自动等待,直到UI线程Idle,才会执行测试代码。接下来,将从配置、写用例、运行一步步介绍Espresso的使用。 30 | 31 | #### 6. [通过ContentProvider多进程共享SharedPreferences数据](http://www.jianshu.com/p/bdebf741221e) 32 | 开发一个多进程应用的时候,我们往往无法避免在多个进程之间共享数据。 多进程共享数据的方法有很多种,在Android中常用的有:SharedPreferences(多进程模式)、广播、Socket、ContentProvider、Messenger、AIDL等。这些方法适用于不同的使用场景,又有各自的局限性。本文即将介绍的是通过ContentProvider,结合SharedPreferences(以下简称SP)实现的进程间共享设置项的功能。这种方式主要适用于以下场景:在一个进程中进行一些设置,而需要在另一个进程实时读取设置,并根据这些设置来执行功能。 33 | 34 | #### 7. [看AspectJ在Android中的强势插入](http://t.cn/RMdIelN) 35 | AOP是Aspect Oriented Programming的缩写,即『面向切面编程』。它和我们平时接触到的OOP都是编程的不同思想,OOP,即『面向对象编程』,它提倡的是将功能模块化,对象化,而AOP的思想,则不太一样,它提倡的是针对同一类问题的统一处理,当然,我们在实际编程过程中,不可能单纯的安装AOP或者OOP的思想来编程,很多时候,可能会混合多种编程思想,大家也不必要纠结该使用哪种思想,取百家之长,才是正道。 36 | 37 | #### 8. [Android工程gradle详解](https://gold.xitu.io/post/58945a8b570c3500623081f0) 38 | 当工程中有许多module的时候,分开管理编译版本,minsdk将会是一件很麻烦的事,因为一个library的改动,可能会影响到其他module。这时我们就需要对所有的版本进行统一的管理,这个时候就该gradle上场了。本文详细介绍了gradle的操作方法。 39 | 40 | #### 9. [Android 6.0 SSL通信](http://www.jianshu.com/p/fefeb1b310f1) 41 | 在Android平台上使用SSL,第一步就是要生成证书。因为JDK自带的keytool工具默认生成的密钥库是JKS类型的,而Android客户端只支持BKS类型的密钥库,所以必须先扩展keytool工具使其生成BKS密钥库。要扩展,则需要下载BouncyCastle库。本文给出了生成证书的方法并且提供了具体的实现代码。 42 | 43 | #### 10. [安卓逆向系列教程](http://blog.csdn.net/wizardforcel/article/details/54730253) 44 | 从事逆向工作的人并不是很多,但反编译过App的开发者应该不在少数。本文作者写了一个系列的文章专门介绍Android逆向的知识,学习逆向知识不仅仅是破解别人的App,更重要的是对于我们进行安防有一定的帮助。 45 | 46 | #### 11. [Android打包之多版本、多环境、多渠道](http://www.jianshu.com/p/872dc6f89cb4) 47 | Android打包之多版本、多环境、多渠道 48 | 49 | ## 开源库&项目&工具 50 | #### 1. [lottie-android](https://github.com/airbnb/lottie-android) 51 | 一个神奇的动画开源项目,动画效果非常赞,项目来自独角兽公司Airbnb。 52 | 53 | ![lottie-android](https://raw.githubusercontent.com/airbnb/lottie-android/master/gifs/Example2.gif) 54 | 55 | #### 2. [Android-SplashView](https://github.com/jkyeo/Android-SplashView) 56 | 该项目可以帮助开发者通过简单的几行代码管理闪屏页或广告页。 57 | 58 | #### 3. [walle](https://github.com/Meituan-Dianping/walle) 59 | Android Signature V2 Scheme签名下的新一代渠道包打包神器。walle通过在Apk中的APK Signature Block区块添加自定义的渠道信息来生成渠道包,从而提高了渠道包生成效率,可以作为单机工具来使用,也可以部署在HTTP服务器上来实时处理渠道包Apk的升级网络请求。 60 | 61 | #### 4. [Toasty](https://github.com/GrenderG/Toasty) 62 | The usual Toast, but with steroids 💪 63 | ![Toasty](https://raw.githubusercontent.com/GrenderG/Toasty/master/art/scr2.png) 64 | 65 | 66 | ## 联系方式 67 | * Email:yanghui1986527#gmail.com 68 | * QQ群: 529327615 69 | * 微信公众号: sn0wdr1am 70 | 71 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 72 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#15.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#15 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [Android Studio 2.4 Preview 6发布,支持Java 8语言功能](http://t.cn/RXERa23) 7 | 几天前,我们发布了 Android Studio 2.4 Preview 6。现在,在 javac/dx 编译路径中,Java 8 语言功能将得到 Android 构建系统的支持。Android Studio 的 Gradle 插件现在对 Java 8 类文件进行“脱糖”处理,仅保留与 Java 7 兼容的类文件,因此,您可以使用 Java 8 的 lambda、方法引用及其他功能。 8 | 9 | 10 | #### 2. [Kotlin 1.1.2 发布,基于 JVM 的编程语言](https://www.oschina.net/news/84206/kotlin-1-1-2-is-out) 11 | Kotlin 1.1.2 发布了,这是 Kotlin 1.1 系列的第二次 bug 修复和工具更新。 12 | 13 | 这次更新带来了编译器和 IntelliJ IDEA 插件的性能改进、工具的一些新功能以及所有领域中的错误修复。Kotlin 1.1.2 还带来了与 2.4.0-alpha 版本 Android Gradle 插件的兼容性。 14 | 15 | 此版本的完整更改列表可以在更新日志中找到。 16 | 17 | 更新内容较多,详情请参阅 发布主页。 18 | 19 | Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。 20 | 21 | 其主要设计目标: 22 | 23 | * 创建一种兼容 Java 的语言 24 | 25 | * 让它比 Java 更安全,能够静态检测常见的陷阱。如:引用空指针 26 | 27 | * 让它比 Java 更简洁,通过支持 variable type inference,higher-order functions (closures),extension functions,mixins and first-class delegation 等实现。 28 | 29 | * 让它比最成熟的竞争对手 Scala 语言更加简单。 30 | 31 | #### 3. [2017年2月全球移动操作系统份额:国内安卓暴涨至86.4%](http://www.ithome.com/html/iphone/304298.htm) 32 | Kantar Worldpanel放出了截止2017年2月底最新的全球移动操作系统份额数据,我们可以了解到三大移动操作系统在全球各地的具体份额情况。iOS系统在中国的份额降至了自2014年7月份以来的历史最低点,从去年同期的22.1%降至13.2%。而安卓系统则迎来增长,从原来的77.1%市占率飙升至86.4% 33 | 34 | 35 | ## Android开发 36 | #### 1. [微信 SQLite 数据库修复实践](http://t.cn/RXEE8MQ) 37 | 众所周知,微信在后台服务器不保存聊天记录,微信在移动客户端所有的聊天记录都存储在一个 SQLite 数据库中,一旦这个数据库损坏,将会丢失用户多年的聊天记录。而我们监控到现网的损坏率是0.02%,也就是每 1w 个用户就有 2 个会遇到数据库损坏。考虑到微信这么庞大的用户基数,这个损坏率就很严重了。更严重的是我们用的官方修复算法,修复成功率只有 30%。损坏率高,修复率低,这两个问题都需要我们着手解决。 38 | 39 | #### 2. [Android 插件技术实战总结](http://t.cn/RXEnzqU) 40 | 安卓应用开发的大量难题,其实最后都需要插件技术去解决。 41 | 42 | 现今插件技术的使用非常普遍,比如微信、QQ、淘宝、天猫、空间、携程、大众点评、手机管家等等这些大家在熟悉不过的应用都在使用。 43 | 44 | 插件技术可以给项目开发带来巨大的好处,比如:并行高效开发、模块解耦、解除单个dex函数不能超过65535的限制、动态更新升级、按需加载等等。 45 | 46 | #### 3. [Android 减包 - 减少APK大小](http://t.cn/RXnIg2j) 47 | 用户经常会避免下载看起来体积较大的应用,特别是在不稳定的2G、3G网络或者在以字节付费的网络。这篇文章描述了怎样减少你的APK大小,这会让更多的用户愿意下载你的应用。 48 | 49 | #### 4. [Android 新一代多渠道打包神器](http://t.cn/RXnMw5M) 50 | ApkChannelPackage是一种快速多渠道打包工具,同时支持基于V1和V2签名进行渠道打包。插件本身会自动检测Apk使用的签名方法,并选择合适的多渠道打包方式,对使用者来说完全透明。 51 | 52 | #### 5. [FileProvider 在 Android N 上的应用](https://zhuanlan.zhihu.com/p/26139355) 53 | Android 从 N 开始不允许以 file:// 的方式通过 Intent 在两个 App 之间分享文件,取而代之的是通过 FileProvider 生成 content://Uri 。如果在 Android N 以上的版本继续使用 file:// 的方式分享文件,则系统会直接抛出异常,导致 App 出现 Crash,当然如果工程的 targetSDK 小于24,暂时还不会遇到这个问题,一旦升级到24及以上,则会立即出现上述问题,所以提早做好预防很有必要,否则等到线上曝出大量的 bug 就很被动了。 54 | 55 | #### 6. [RemoteViews详细解释](http://www.haotianyi.win/2017/04/07/view/RemoteViews详细解释/) 56 | RemoteViews表示的是一个view结构,它可以在其他进程中显示。由于它在其他进程中显示,为了能够更新它的界面,RemoteViews提供了一组基础的操作用于跨进程更新它的界面。RemoteViews主要用于通知栏通知和桌面小部件的开发,通知栏通知是通过NotificationManager的notify方法来实现的;桌面小部件是通过AppWidgetProvider来实现的,它本质上是一个广播(BroadcastReceiver)。这两者的界面都是运行在SystemServer进程中(跨进程)。本文详细介绍了RemoteViews的工作原理。 57 | 58 | #### 7. [有效减少Android应用的方法数](https://zhuanlan.zhihu.com/p/26272085) 59 | 65k限制确实是个令人不爽的事情,本文会让你知道是哪些库用了大量的方法,并该怎么减少这些库的方法数。现在的应用越来越大,方法数经常达到65k限制。本文主要介绍了如何可视化library方法数和减少方法数的方法。 60 | 61 | #### 8. [Android GC原理探究](https://mp.weixin.qq.com/s/CUU3Ml394H_fkabhNNX32Q) 62 | 想写一篇关于Android GC的想法来源于追查一个魅族手机图片滑动卡顿问题,由于不断的GC导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和GC的原理,为什么会不断的GC,GC ALLOC和GC COCURRENT有什么区别,能不能想办法扩大堆内存减少GC的频次等等。 63 | 64 | #### 9. [Android OOM案例分析](http://tech.meituan.com/oom_analysis.html) 65 | 在Android(Java)开发中,基本都会遇到java.lang.OutOfMemoryError(本文简称OOM),这种错误解决起来相对于一般的Exception或者Error都要难一些,主要是由于错误产生的root cause不是很显而易见。由于没有办法能够直接拿到用户的内存dump文件,如果错误发生在线上的版本,分析起来就会更加困难。本文从一个具体的案例切入,介绍OOM分析的思路及相关工具的使用。 66 | 67 | #### 10. [Android无埋点数据收集SDK关键技术](http://www.jianshu.com/p/b5ffe845fe2d) 68 | 鉴于日益强烈的精细化运营需求,网易乐得从去年开始构建大数据平台,无埋点数据收集SDK因此立项,用于向大数据平台提供全量,完整,准确的客户端数据。无埋点数据收集SDK Android端从着手,到经历重构,逐步完善到现在已经有快一年的时间了。期间从开源社区以及同行中得到了一些很有意义的技术参考,因此在这个SDK趋于完善的今天,我们也考虑将这一路在技术上的探索经历和收获分享出来。 69 | 70 | #### 11. [Android辅助功能(一)-AccessibilityEvent的分发](https://darkness463.github.io/2017/04/17/accessibility-event/) 71 | 目前关于辅助功能的使用的文章很多,但鲜有分析其具体实现的,本文基于Andoird 7.1.0_r7源码分析一下辅助事件是怎么分发的,只涉及事件的分发和辅助App的接收,之后有机会再讲一讲获取AccessibilityNodeInfo、进行操作等等的源码流程。 72 | 73 | ## 开源库&项目&工具 74 | #### 1. [Matisse 图片选择器](https://github.com/zhihu/Matisse) 75 | 知乎APP开源的一个图片选择器,并内置了两套主题,UI设计基本满足大部分APP需求。 76 | 77 | ## 联系方式 78 | * Email:yanghui1986527#gmail.com 79 | * Github: https://github.com/snowdream 80 | * Blog: http://snowdream.github.io/blog/ 81 | * 简书:http://www.jianshu.com/u/748f0f7e6432 82 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 83 | * QQ群: 529327615 84 | * 微信公众号: sn0wdr1am 85 | 86 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 87 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#3.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#3 2 | 3 | ## 业界新闻 4 | #### 1. [Kotlin 1.1 Beta 发布,正式版还会远吗?](https://www.oschina.net/news/81163/kotlin-1-1-beta-release) 5 | Kotlin 1.1 的最大更新是完全支持对 JavaScript 的编译,以及在 JVM, Android 和 JavaScript 上的协程(Coroutines) 6 | 7 | ## Android开发 8 | #### 1. [Annotation-Processing-Tool详解](http://qiushao.net/2015/07/07/Annotation-Processing-Tool详解/) 9 | 在这篇文章中我将阐述如何实现一个注解处理器。首先我将向你解释什么是注解处理器,你可以使用这个强大的工具来做什么及不能做什么。接下来我们将一步一步来实现一个简单的注解处理器。 10 | 11 | #### 2. [ android-apt 即将退出历史舞台](http://blog.csdn.net/asce1885/article/details/52878076) 12 | 伴随着 Android Gradle 插件 2.2 版本的发布,近期 android-apt 作者在官网发表声明证实了后续将不会继续维护 android-apt,并推荐大家使用 Android 官方插件提供的相同能力。也就是说,大约三年前推出的 android-apt 即将告别开发者,退出历史舞台,Android Gradle 插件提供了名为 annotationProcessor 的功能来完全代替 android-apt。 13 | 14 | #### 3. [Android - 利用Eclipse Memory Analyzer(MAT)检测内存泄露问题](http://cashow.github.io/android-detect-out-of-memory-with-eclipse-memory-analyzer.html) 15 | 通过LeakCanary或者Eclipse Memory Analyzer(简称MAT),可以较方便地定位内存泄露的源头。 16 | 17 | #### 4. [Android编译时注解框架系列](https://github.com/lizhaoxuan/Android-APT-Framework) 18 | Android编译时注解框架系列博客。 19 | 20 | #### 5. [谈谈Java接口与实现的分离以及隐藏实现](http://www.jianshu.com/p/ede85f9f60b7) 21 | 下面我将说说为什要进行接口和实现的分离、对实现方式进行隐藏 以及怎么实现它们. 22 | 23 | #### 6. [看 AspectJ 在 Android 中的强势插入](http://t.cn/RMFLPVd) 24 | AOP是Aspect Oriented Programming的缩写,即『面向切面编程』。 25 | 26 | #### 7. [花式实现图片3D翻转效果](http://t.cn/RMFLYtr) 27 | 一个很炫的3D翻转切换图片的效果。 28 | 29 | #### 8. [Espresso浅析和使用](http://t.cn/RMFLgPq) 30 | Espresso是一个Google官方提供的Android应用UI自动化测试框架。 31 | 32 | #### 9. [ExifInterface 支持库简介](http://t.cn/RMFyfBV) 33 | 随着 25.1.0 支持库的发布,支持库大家庭迎来了一名新成员:ExifInterface 支持库。由于 Android 7.1 引入了对框架 ExifInterface 的重大改进,因此只有通过支持库的 ExifInterface 让所有 API 9 以上的设备都能利用这些改进才有意义。 34 | 35 | #### 10. [谈谈Android的so](http://allenfeng.com/2016/11/06/what-you-should-know-about-android-abi-and-so/) 36 | 一般情况下,我们不需要关心so。但是当APP使用的第三方SDK中包含了so文件,或者自己需要使用NDK开发某些功能,就有必要去好好了解下so的一些知识。早期的Android设备只支持ARMv5的CPU架构,随着Android系统的快速发展,搭载Android的硬件平台也早已多样化了,又加入了ARMv7,x86,MIPS,ARMv8,MIPS64和x86_64。 37 | 38 | #### 11. [美团热更新方案 ASM 实践](http://geek.csdn.net/news/detail/133086) 39 | 从《Android热更新方案 Robust》一文可知,美团热更新使用的是 Instant Run 的方案。本文将着重于分享美团热更新方案中没讲到的部分,包含以下几个方面:1.作为云服务提供厂商,需要提供给客户 SDK,SDK 发布后同样要考虑 Bug 修复问题。此处将介绍作为 SDK 发布者的热更新方案选型,即为什么使用美团方案&Instant Run 方案。2.美团方案实现的大致结构;3.ASM 插桩的过程,字节码导读,以及遇到的各种坑 40 | 41 | 42 | #### 12. [Android 5.0(Lollipop)中的SurfaceTexture,TextureView, SurfaceView和GLSurfaceView](http://blog.csdn.net/jinzhuojun/article/details/44062175) 43 | SurfaceView从Android 1.0(API level 1)时就有 。它继承自类View,因此它本质上是一个View。但与普通View不同的是,它有自己的Surface。我们知道,一般的Activity包含的多个View会组成View hierachy的树形结构,只有最顶层的DecorView,也就是根结点视图,才是对WMS可见的。这个DecorView在WMS中有一个对应的WindowState。相应地,在SF中对应的Layer。而SurfaceView自带一个Surface,这个Surface在WMS中有自己对应的WindowState,在SF中也会有自己的Layer。 44 | 45 | ## 开源库&项目&工具 46 | #### 1. [android-apt](https://bitbucket.org/hvisser/android-apt) 47 | The android-apt plugin assists in working with annotation processors in combination with Android Studio. It has two purposes: 48 | * Allow to configure a compile time only annotation processor as a dependency, not including the artifact in the final APK or library 49 | * Set up the source paths so that code that is generated from the annotation processor is correctly picked up by Android Studio. 50 | 51 | #### 2. [Big Bang](https://github.com/SmartisanTech/android) 52 | 什么是大爆炸(Big Bang)? 53 | 54 | 用拇指大面积按压屏幕中的文字,Big Bang 会将你按住的那一段文字全部“炸”开并且按照语义智能拆分成易于选取的独立的字和词,由你随心所欲地选择,并可直接搜索、分享和复制。Big Bang 开创性地解决了在手机这样的小屏幕上难于处理文字的弊端。 55 | 56 | #### 3. [CodeView](https://github.com/tiagohm/CodeView) 57 | Android Code Highlighter 58 | 59 | #### 4. [SlantedTextView](https://github.com/HeZaiJin/SlantedTextView/blob/master/README-cn.md) 60 | 一个倾斜的TextView,适用于标签效果。 61 | 62 | ![SlantedTextView](https://github.com/HeZaiJin/SlantedTextView/raw/master/screen_shot/screenshot.png) 63 | 64 | #### 5. [AnimatedRecordingView](https://github.com/HeZaiJin/AnimatedRecordingView) 65 | Android animated recording view . 66 | 67 | ![AnimatedRecordingView](https://github.com/HeZaiJin/AnimatedRecordingView/raw/master/screen_shot/animated_recording.gif) 68 | 69 | #### 6. [ARouter](https://github.com/alibaba/ARouter/blob/master/README_CN.md) 70 | Android平台中对页面、服务提供路由功能的中间件 71 | 72 | #### 7. [zxing-android-embedded](https://github.com/journeyapps/zxing-android-embedded) 73 | Port of the ZXing Android application as an Android library project, for embedding in an Android application. 74 | 75 | ## 联系方式 76 | * Email:yanghui1986527#gmail.com 77 | * QQ群: 529327615 78 | * 微信公众号: sn0wdr1am 79 | 80 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 81 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#26.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#26 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [ECMAScript 2017 语言规范发布](https://www.oschina.net/news/86699/ecmascript-2017standards) 7 | Ecma 国际公布了第八版的 ECMAScript 语言规范 ECMAScript 2017(或 ES8)。 8 | 9 | #### 2. [谷歌暗示:Android 8.0系统正式版即将到来](https://www.ithome.com/html/android/315355.htm) 10 | 从谷歌发布信息来看,谷歌会于本月底推送Android 8.0的最后一个开发者预览版,此版本将接近于最终正式版。据外媒softpedia报道,谷歌已经证实Android 8.0的正式版会在2017年第三季度正式发布,最快下月底推出。首批机型包括Google Pixel和Google Pixel XL,以及Nexus 5X和Nexus 6p。 11 | 12 | ## Android开发 13 | #### 1. [微信Android模块化架构重构实践](http://t.cn/RKSHl7i) 14 | 微信Android诞生之初,用的是常见的分层结构设计。这种架构简单、清晰并一直沿袭至今。这是微信架构的v1.x时代。 15 | 16 | #### 2. [从Ant到Gradle的迁移之路](http://t.cn/RKSHsWH) 17 | 由于Gradle的种种优点(大家可以参考网上的资料,这里不多说了),前一段时间项目组打算将原来的Ant编译打包方式迁移到Gradle编译打包方式。 18 | 现在迁移基本完成,我这里将迁移过程遇到的坑以及经验做一个总结,希望能给大家在Ant转Gradle的时候带来一些提示。 19 | 20 | #### 3. [C++17 相比于 C++14 的所有重大变化](http://t.cn/RKSQsZA) 21 | 本文档列举了自C++14发布以来,到C++17 DIS(N4660)发布为止,应用于C++工作草案(working draft)的所有重大变化。重大变化(major changes)是以专门的文件(paper)的形式加入的。不是每个文件都单独在此提及,没有单独提及的文件在下面简要列出。CWG或LWG问题清单(issue list)中的问题解决方案(issue resolution)通常不包括在重大变化之内,但是包含问题解决方案的文件也会简要列出。 22 | 23 | #### 4. [热修复之 Method Hook 原理分析](https://pqpo.me/2017/07/07/hotfix-method-hook/) 24 | 本篇文章主要分析以 AndFix 为代表的底层方法替换方案,并且实现了《深入探索 Android 热修复技术原理》中提到得更为优雅,兼容性更好的方法替换新方案(MethodHook)。 25 | 26 | #### 5. [在 Kotlin 语言中调用 JavaScript 方法](https://coyee.com/article/12318-calling-javascript-from-kotlin) 27 | Kotlin 已被设计为能够与 Java 平台轻松互操作。它将 Java 类视为 Kotlin 类,并且 Java 也将 Kotlin 类视为 Java 类。但是,JavaScript 是一种动态类型语言,这意味着它不会在编译期检查类型。你可以通过动态类型在 Kotlin 中自由地与 JavaScript 交流,但是如果你想要 Kotlin 类型系统的全部威力 ,你可以为 JavaScript 库创建 Kotlin 头文件。 28 | 29 | ## 专题栏目 - Glide 30 | #### 1. [开始!](https://mrfu.me/2016/02/27/Glide_Getting_Started/) 31 | #### 2. [加载进阶](http://mrfu.me/2016/02/27/Glide_Advanced_Loading/) 32 | #### 3. [ListAdapter(ListView, GridView)](http://mrfu.me/2016/02/27/Glide_ListAdapter_(ListView,_GridView)/) 33 | #### 4. [占位符 和 渐现动画](http://mrfu.me/2016/02/27/Glide_Placeholders_&_Fade_Animations/) 34 | #### 5. [图片重设大小 和 缩放](http://mrfu.me/2016/02/27/Glide_Image_Resizing_&_Scaling/) 35 | #### 6. [显示 Gif 和 Video](http://mrfu.me/2016/02/27/Glide_Displaying_Gifs_&_Videos/) 36 | #### 7. [缓存基础](http://mrfu.me/2016/02/27/Glide_Caching_Basics/) 37 | #### 8. [请求优先级](http://mrfu.me/2016/02/27/Glide_Request_Priorities/) 38 | #### 9. [缩略图](http://mrfu.me/2016/02/27/Glide_Thumbnails/) 39 | #### 10. [回调:SimpleTarget 和 ViewTarget 用于自定义视图类](http://mrfu.me/2016/02/27/Glide_Callbacks_SimpleTarget_and_ViewTarget_for_Custom_View_Classes/) 40 | #### 11. [加载图片到通知栏和应用小部件中](http://mrfu.me/2016/02/27/Glide_Loading_Images_into_Notifications_and_AppWidgets/) 41 | #### 12. [异常:调试和错误处理](http://mrfu.me/2016/02/28/Glide_Exceptions-_Debugging_and_Error_Handling/) 42 | #### 13. [自定义转换](http://mrfu.me/2016/02/28/Glide_Custom_Transformations/) 43 | #### 14. [用 animate() 自定义动画](http://mrfu.me/2016/02/28/Glide_Custom_Animations_with_animate()/) 44 | #### 15. [集成网络栈](http://mrfu.me/2016/02/28/Glide_Integrating_Networking_Stacks/) 45 | #### 16. [用 Module 自定义 Glide](http://mrfu.me/2016/02/28/Glide_Customize_Glide_with_Modules/) 46 | #### 17. [Module 实例:接受自签名证书的 HTTPS](http://mrfu.me/2016/02/28/Glide_Module_Example_Accepting_Self-Signed_HTTPS_Certificates/) 47 | #### 18. [Module 实例:自定义缓存](http://mrfu.me/2016/02/28/Glide_Module_Example_Customize_Caching/) 48 | #### 19. [Module 实例:用自定义尺寸优化加载的图片](http://mrfu.me/2016/02/28/Glide_Module_Example_Optimizing/) 49 | #### 20. [动态使用 Model Loader](http://mrfu.me/2016/02/28/Glide_Dynamically_Use_Model_Loaders/) 50 | #### 21. [如何旋转图像](http://mrfu.me/2016/02/28/Glide_How_to_Rotate_Images/) 51 | #### 22. [系列综述](http://mrfu.me/2016/02/28/Glide_Series_Roundup/) 52 | 53 | 54 | ## 开源库&项目&工具 55 | #### 1. [mimecraft](https://github.com/square/mimecraft) 56 | Utility for creating RFC-compliant multipart and form-encoded HTTP request bodies. http://square.github.io/mimecraft/ 57 | 58 | #### 2. [turn-layout-manager](https://github.com/cdflynn/turn-layout-manager) 59 | A carousel layout manager for RecyclerView 60 | 61 | #### 3. [ViewAnimator](https://github.com/florent37/ViewAnimator) 62 | A fluent Android animation library 63 | 64 | #### 4. [RichPath](https://github.com/tarek360/RichPath) 65 | 💪 Rich Android Path. :clown_face: Draw as you want. 🎉 Animate much as you can. 66 | ![RichPath](https://github.com/tarek360/RichPath/raw/master/screenshots/header.gif) 67 | 68 | #### 5. [uCrop](https://github.com/Yalantis/uCrop) 69 | Image Cropping Library for Android 70 | 71 | ## 联系方式 72 | * Email:yanghui1986527#gmail.com 73 | * Github: https://github.com/snowdream 74 | * Blog: http://snowdream.github.io/blog/ 75 | * 简书:http://www.jianshu.com/u/748f0f7e6432 76 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 77 | * QQ群: 529327615 78 | * 微信公众号: sn0wdr1am 79 | 80 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 81 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#22.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#22 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [Android O API 已发布最终版本](http://t.cn/RSFEoxM) 7 | 在上个月举行的 Google I/O 大会上,我们宣布了 Android O 的第二个开发者预览版,同时介绍了 Fluid Experiences 和 Vitals 等重要主题,并且重点介绍了我们利用 Treble 项目实现库模块化方面的工作进展。 8 | 9 | #### 2. [谷歌官方确认:Android O 的版本号为 8.0](https://www.oschina.net/news/85659/android-8-0-beta3) 10 | 今天,谷歌为参与 Android Beta 的用户推送了全新的 Android O 系统,也就是第三个开发者预览版。 11 | 12 | #### 3. [大势所趋,WebAssembly 将统一浏览器编译格式](https://www.oschina.net/news/85644/webkit-now-complete-support-webassembly) 13 | 被 Safari、App Store 以及许多其他 OS X、iOS 和 Linux 应用所广泛使用的开源 Web 浏览器引擎 WebKit ,如今有了完整的 WebAssembly 部署能力。就在上周,Google Chrome 也宣布将停止支持 PNaCl ,拥抱 WebAssembly ,并表示因为考虑到跨浏览器支持乃是大势所趋,今后主要依靠 WebAssembly 构建原生代码。 14 | 15 | ## Android开发 16 | #### 1. [微信移动端数据库组件WCDB系列(三) — WINQ原理篇](http://t.cn/RSFnLnD) 17 | 高效、完整、易用是WCDB的基本原则。前几篇文章分享了WCDB的基本用法和修复工具,接下来将更深入地聊聊WCDB在易用性上的思考和实践。 18 | 19 | #### 2. [微店 Android 插件化实践](http://t.cn/RS1GF0k) 20 | 随着微店业务的发展,App不可避免的也遇到了65535的大坑。除此之外,业务模块增多,代码量增大所带来的问题也逐渐显现出来。模块耦合度高、协作开发困难、编译时间过长等问题严重影响了开发进程。在预研了多种方案以后,插件化似乎是解决这些问题比较好的一个方向。虽然业界有很多优秀的开源插件化框架, 但预研后发现在使用上对我们会有一定的局限。要么追求低侵入性而Hook大量系统底层代码稳定性不敢保证,要么有很高的侵入性不满足微店定制化的需求。技术要很好地服务业务,我们想在稳定性和低侵入性上寻找一个平衡…… 21 | 22 | #### 3. [开发者大杀器 —— 刨根问底,揪出 Android App 耗电的元凶代码](http://www.jianshu.com/p/27ba2759b221) 23 | 这是一篇讲述应用耗电的文章,围绕 Android 电量采集机制及第二代 Battery Historian 分析工具讲述。文从数据采集、导出、环境搭建、解读报告的角度出发,从细节讲解整个流程。和大谈概念的文章不同,这里将进行实际操作及分析。 24 | 25 | #### 4. [QQ会员基于hybrid的高质量H5架构实践](http://t.cn/RSFuFMM) 26 | 本文主要介绍QQ会员的前端开发团队在手Q的hybrid模式下对H5页面的性能优化、组件化和持续集成方面的实践。 27 | 28 | #### 5. [WebView缓存原理分析和应用](http://unclechen.github.io/2017/05/13/WebView缓存原理分析和应用/) 29 | 现在的App开发,或多或少都会用到Hybrid模式,到了WebView这边,经常会加载一些js文件(例如和WebView用来Native通信的bridge.js),而这些js文件不会经常发生变化,所以我们希望js在WebView里面加载一次之后,如果js没有发生变化,下次就不用再发起网络请求去加载,从而减少流量和资源的占用。那么有什么方式可以达到这个目的呢?先得从WebView的缓存原理入手。 30 | 31 | #### 6. [Android卡顿检测方案](http://blog.coderclock.com/2017/06/04/android/AndroidPerformanceTools-BlockLooper/) 32 | 应用的流畅度最直接的影响了App的用户体验,轻微的卡顿有时导致用户的界面操作需要等待一两秒钟才能生效,严重的卡顿则导致系统直接弹出ANR的提示窗口,让用户选择要继续等待还是关闭应用。 33 | 34 | #### 7. [Android 多状态加载布局的开发 Tips](http://gudong.name/2017/04/26/loading_layout_practice.html) 35 | 对应到开发中,我们通常会开发一个对应的自定义 layout 用于根据页面不同的状态来显示不同的提示 view。 36 | 37 | 38 | ## 专题栏目 - HttpResponseCache 39 | #### 1. [如何高效的使用Okhttp](https://xiequan.info/如何高效的使用okhttp/?utm_source=tuicool&utm_medium=referral) 40 | OkHttp是一个在开发可汗学院Android APP过程中非常重要的依赖库。它的默认的配置为我们提供了非常重要实用功能,下面一些步骤我们可以让Okhttp提供更多功能使用灵活和自省能力。 41 | 42 | #### 2. [Android中HTTP相关的API](http://droidyue.com/blog/2015/05/30/android-http-clients/index.html) 43 | Android中大多数应用都会发送和接受HTTP请求,在Android API中主要由两个HTTP请求的相关类,一个是HttpURLConnection,另一个是Apache HTTP Client。这两个类实现的HTTP请求都支持HTTPS协议,基于流的上传和下载,可配置超时时间,IPv6和连接池。 44 | 45 | #### 3. [ HttpResponseCache的使用 缓存 cache](http://blog.csdn.net/yhqbsand/article/details/8596975) 46 | 之前我们在软件开发中,cache都是自己来写,不管是图片缓存还是其他从网络获取的数据,有了HttpResponseCache,它帮助我们可以很好的解决cache这个问题(我现在感觉他只适合cache一些小的数据,如果大量的图片cache还是自己缓存到SD卡上面去比较好)。 47 | 48 | #### 4. [HttpResponseCache原理分析](http://qianzui.github.io/blog/2015-03-29-httpresponsecache-source-code-analysis/) 49 | 从Android4.0(API 14)开始,SDK源码中新增了一个类:android.net.http.HttpResponseCache.使用这个类可以很方便的对HTTP和HTTPS请求实现cache,所有的缓存逻辑再也不用自己写了,只要你使用HttpURLConnection或者HttpsURLConnection作为默认的网络请求库(也是Google官方建议使用的),底层默认帮你实现的缓存的管理,不支持HttpClient。 50 | 51 | 52 | ## 开源库&项目&工具 53 | #### 1. [Graywater](https://github.com/tumblr/graywater) 54 | An Android library for decomposing RecyclerView layouts to improve scroll performance. 55 | 56 | #### 2. [MagicIndicator](https://github.com/hackware1993/MagicIndicator) 57 | A powerful, customizable and extensible ViewPager indicator framework. As the best alternative of ViewPagerIndicator, TabLayout and PagerSlidingTabStrip —— 强大、可定制、易扩展的 ViewPager 指示器框架。是ViewPagerIndicator、TabLayout、PagerSlidingTabStrip的最佳替代品。支持角标,更支持在非ViewPager场景下使用(使用hide()、show()切换Fragment或使用setVisibility切换FrameLayout里的View等) 58 | 59 | #### 3. [ViewTooltip](https://github.com/florent37/ViewTooltip) 60 | A fluent tooltip for Android 61 | 62 | #### 4. [SwiftKotlin](https://github.com/angelolloqui/SwiftKotlin) 63 | A tool to convert Swift code to Kotlin. 64 | 65 | #### 5. [SmartTabLayout](https://github.com/ogaclejapan/SmartTabLayout) 66 | A custom ViewPager title strip which gives continuous feedback to the user when scrolling 67 | 68 | #### 6. [ShadowImageView](https://github.com/yingLanNull/ShadowImageView) 69 | 🔥可以根据图片内容变阴影颜色,更加细腻的阴影效果 It can change color according to the picture, more delicate shadow effect 70 | 71 | #### 7. [easypermissions](https://github.com/googlesamples/easypermissions) 72 | Simplify Android M system permissions 73 | 74 | #### 8. [AndroidPerformanceTools](https://github.com/D-clock/AndroidPerformanceTools) 75 | 本项目用于整理安卓性能监测方案,如果你有不错的方案推荐,欢迎给我提个Issue! 76 | 77 | #### 9. [Aria](https://github.com/AriaLyy/Aria) 78 | 一个简单易用,稳当高效的下载框架。 79 | 80 | ## 联系方式 81 | * Email:yanghui1986527#gmail.com 82 | * Github: https://github.com/snowdream 83 | * Blog: http://snowdream.github.io/blog/ 84 | * 简书:http://www.jianshu.com/u/748f0f7e6432 85 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 86 | * QQ群: 529327615 87 | * 微信公众号: sn0wdr1am 88 | 89 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 90 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#18.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#18 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [欢呼声热烈 谷歌宣布 Kotlin 成 Android 开发一级语言](https://www.oschina.net/news/84938/android-o-release-with-kotlin) 7 | 谷歌宣布,将Kotlin语言作为安卓开发的一级编程语言。Kotlin由JetBrains公司开发,与Java 100%互通,并具备诸多Java尚不支持的新特性。谷歌称还将与JetBrains公司合作,为Kotlin设立一个非盈利基金会。 8 | 9 | 10 | #### 2. [Android Studio 3.0 Canary 1 发布,支持 Kotlin 语言](https://www.oschina.net/news/84948/android-studio-3-0-canary1) 11 | Android Studio 3.0 Canary 1 发布了。官方表示,这些一直在默默迭代中的功能本应是 Android Studio 2.4 Canaries 的一部分,但今天他们意识到这个版本添加了许多重要的功能,因此将版本改成了 Android Studio 3.0。Android Studio 3.0 Canary 1 三个主要的新特性: 12 | 13 | * 一套新的应用程序性能分析工具,用于快速诊断性能问题 14 | 15 | * 支持 Kotlin 编程语言 16 | 17 | * 提升大型 app 项目的 Gradle 构建速度 18 | 19 | #### 3. [谷歌正式发布 Android O 首个公测版](https://www.oschina.net/news/84943/whats-new-in-android-o-developer) 20 | 谷歌 I/O 2017 开发者大会今日正式召开,并公布了全新一代的安卓系统 Android O,目前首个公测版已经开放下载,但是官方尚未公布 Android O 的正式代号。 21 | 22 | 根据谷歌官方在 I/O 2017 开发者大会上的介绍,Android O 的更新可概括为两方面:一是“Fluid Experience(流畅体验)”,二是“Vitals(核心功能)”。前者主要是新系统的功能性部分,后者则更关注安全、性能等。 23 | 24 | 除此之外,谷歌还带来了一个 Android Go 的早期版本,专门针对具有 1GB 或更少内存的 Android 设备构建。 25 | 26 | #### 4. [Glide 4.0.0 RC0 发布,Android 图片加载和缓存库](https://www.oschina.net/news/84926/glide-4-0-0-rc0) 27 | Glide 4.0.0 RC0 发布了,Glide 是一个 Android 上的图片加载和缓存库,其目的是实现平滑的图片列表滚动效果。 28 | 29 | 本次的更新包含较多的更改,下面列出一些值得关注的亮点: 30 | 31 | * 用户可以通过向 Glide 的 gh 页面分支提交 pull requests 来提供新的文档 32 | 33 | * 一个新的可扩展生成的 API,允许通过添加新类型或自定义选项集来轻松定制 Glide 流畅的 API 34 | 35 | * 大量简化的个人请求类型,确保选项始终如一,易于使用,即使您正在加载不同类型的资源 36 | 37 | * 各种性能改进,包括在下载采样图像时大量减少垃圾,更加智能的默认磁盘缓存策略,以及加载 GIF 时性能的改进 38 | 39 | * 改进了视图大小和布局的处理,特别是在 RecyclerView 中 40 | 41 | ## Android开发 42 | #### 1. [Android热修复升级探索](http://t.cn/RaRCACt) 43 | 前段时间,Android平台上涌现了一系列热修复方案,如阿里的Andfix、微信的Tinker、QQ空间的Nuva、手Q的QFix等等。 44 | 45 | 其中,Andfix的即时生效令人印象深刻,它稍显另类,并不需要重新启动,而是在加载补丁后直接对方法进行替换就可以完成修复,然而它的使用限制也遭遇到更多的质疑。 46 | 47 | 我们也对代码的native替换原理重新进行了深入思考,从克服其限制和兼容性入手,以一种更加优雅的替换思路,实现了即时生效的代码热修复。 48 | 49 | #### 2. [FlexboxLayout——实现灵活多变的瀑布流](http://www.jianshu.com/p/8060f7623f1c) 50 | 之前看到一个很炫酷的布局:FlexboxLayout,可以很方便地实现瀑布流的效果。今天正好用到项目中,对FlexboxLayout进行一个简单的学习。 51 | 52 | #### 3. [Android 中使用持续集成](https://zhuanlan.zhihu.com/p/26758264) 53 | Continuous Integration - 持续集成,持续集成是一种软件开发实践,通过自动化的构建(包括编译、发布和自动化测试)来验证,从而帮助尽快发现集成错误。 54 | 55 | #### 4. [okhttp内核剖析](http://www.jianshu.com/p/9ed2c2f2a52c) 56 | 本文是一篇介绍okhttp内核原理的文章,由于okhttp源码特别特别复杂,类涉及较多,所以导致本文非常长。本文作者非常用心,还为读者录制了录制了跟文章同步的视频。 57 | 58 | #### 5. [Android 模块化探索与实践](http://baronzhang.com/blog/Framework/Android-模块化探索与实践/) 59 | 为了降低大型软件复杂性和耦合度,同时也为了适应模块重用、多团队并行开发测试等等需求,模块化在 Android 平台上变得势在必行。 60 | 61 | ## 专题栏目 - Kotlin 62 | #### 1. [Getting started with Android and Kotlin](http://kotlinlang.org/docs/tutorials/kotlin-android.html) 63 | This tutorial walks us through creating a simple Kotlin application for Android using Android Studio. 64 | 65 | #### 2. [Android Frameworks Using Annotation Processing](http://kotlinlang.org/docs/tutorials/android-frameworks.html) 66 | This tutorial describes the usage of popular Android frameworks and libraries that use annotation processing with Kotlin. 67 | 68 | #### 3. [Kotlin Reference](http://kotlinlang.org/docs/reference/) 69 | Provides a complete reference to the Kotlin language and the standard library. 70 | 71 | #### 4. [Kotlin:Android世界的Swift](http://www.infoq.com/cn/news/2015/06/Android-JVM-JetBrains-Kotlin) 72 | Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。它与Java高度可互操作,可以同时用在一个项目中。 73 | 74 | #### 5. [awesome-kotlin](https://github.com/KotlinBy/awesome-kotlin#android-libraries) 75 | Kotlin相关类库索引大全 76 | 77 | #### 6. [kotlinpoet](https://github.com/square/kotlinpoet) 78 | A Kotlin API for generating .kt source files. 79 | 80 | #### 7. [ToyBricks简介以及原理分析](http://t.cn/RaAesa1) 81 | 我始终认为,在高内聚,低耦合的原则下,进行组件化,模块化,插件化都是移动应用开发的趋势。 82 | 83 | #### 8. [ToyBricks用户手册](http://t.cn/RaXRMwa) 84 | ToyBricks是一个Android项目模块化的解决方案,主要包括四个部分,APT注解,APT注解处理器,ToyBricks插件(Gradle Plugin),ToyBricks库。 85 | 86 | #### 9. [使用Kotlin开发Android 创建工程与配置](http://www.jianshu.com/p/1f1d1000f146) 87 | 今天早上谷歌I/O 2017大会,Kotlin成为了Android开发的官方语言,之前就有听过Kotlin,但并没有实际使用过,现在看来是该了解了。 88 | 89 | #### 10. [使用Kotlin优雅的开发Android应用](http://www.jianshu.com/p/4f60932d46ff) 90 | 今天的这篇文章带你学习使用Kotlin开发Android应用,并对比我们传统语言Java,让你真真切切的感受到他的美和优雅。 91 | 92 | #### 11. [《Kotlin for android developers》中文版翻译](https://wangjiegulu.gitbooks.io/kotlin-for-android-developers-zh/content/) 93 | 在这本书中,我会使用Kotlin作为主要的语言来开发一个android应用。方式是通过开发一个应用来学习这门语言,而不是根据传统的结构来学习。我会在感兴趣的点停下来通过与Java1.7对比的方式讲讲Kotlin的一些概念和特性。用这种方法你就能知道它们的不同之处,并且知道哪部分语言特性可以让你提高你的工作效率。 94 | 95 | ## 开源库&项目&工具 96 | #### 1. [ParticleTextView](https://github.com/Yasic/ParticleTextView) 97 | 一个用粒子动画显示文字的 Android 自定义 View 98 | 99 | #### 2. [JetBrains/kotlin](https://github.com/JetBrains/kotlin) 100 | The Kotlin Programming Language http://kotlinlang.org/ 101 | 102 | #### 3. [kotlinpoet](https://github.com/square/kotlinpoet) 103 | A Kotlin API for generating .kt source files. 104 | 105 | #### 4. [Kotlin/anko](https://github.com/Kotlin/anko) 106 | Pleasant Android application development 107 | 108 | #### 5. [Kotlin Playground](https://try.kotlinlang.org/) 109 | Try Kotlin right in the browser. 110 | 111 | ## 联系方式 112 | * Email:yanghui1986527#gmail.com 113 | * Github: https://github.com/snowdream 114 | * Blog: http://snowdream.github.io/blog/ 115 | * 简书:http://www.jianshu.com/u/748f0f7e6432 116 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 117 | * QQ群: 529327615 118 | * 微信公众号: sn0wdr1am 119 | 120 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 121 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#24.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#24 2 | 3 | 声明:所有内容收集整理自网络。如有侵权,请联系删除。微信公众号上请点击“阅读原文”阅读完整版本。 4 | 5 | ## 业界新闻 6 | #### 1. [JCP EC 投票通过 Java 模块化系统,RedHat 弃票](https://www.oschina.net/news/86249/jcp-ec-java-pass) 7 | JCP Executive Committee 公布了对 Java Platform Module System(或称为 Jigsaw)的投票结果,以 RedHat 的 1 票弃权,24 票通过了该决议。 8 | 9 | #### 2. [发布Android Things Developer Preview 4.1](http://t.cn/RoTTCwh) 10 | 我们发布了 Android Things 的全新 Developer Preview 4.1 (DP4.1),新版本包括对新硬件的支持和对平台的问题修复。Android Things 是 Google 推出的平台,旨在帮助 Android 开发者打造物联网 (IoT) 设备,并从原型开发无缝扩展到量产。 11 | 12 | #### 3. [安卓 8.0 中 Chrome 浏览器新特性:画中画视频](https://www.oschina.net/news/86199/chrome-new-features-on-android-8) 13 | Android O 中一个新增的重要功能就是画中画视频,也就是视频可以通过小窗播放,即使离开当前应用也可以。当然,这个功能还要得到应用的支持,现在 Chrome 浏览器就已经开始支持这个功能。 14 | 15 | ## Android开发 16 | #### 1. [Android O 迁移应用官方指南](http://t.cn/RoTTUHW) 17 | Android O 引入了若干新的功能和 API,并加入了即便您未对应用做任何更改仍可能对其行为产生影响的一些变动。为帮助您做好准备,本文将说明如何执行兼容性测试,以及如何更新应用以便利用 Android O 的新功能: 18 | 19 | #### 2. [微信移动数据库组件WCDB(四) — Android 特性篇](http://t.cn/RoTT8fT) 20 | 之前我们已经发过几篇 iOS 和修复的文章,Android 由于接口跟系统几乎一样,相信大家都比较熟悉,不熟悉用法也可以到 Android Developer 官网看一下。但是,我们也有一些特色功能和优化大家可能不容易注意到, 现在就单独拿出来说说。 21 | 22 | #### 3. [客户端开发设计总结](http://blog.csdn.net/hursing/article/details/52586541) 23 | 1. 基础设施 24 | 2. 交互 25 | 3. 硬件设备 26 | 4. 程序设计 27 | 5. 后勤 28 | 6. 其它 29 | 7. 一些感想 30 | 31 | #### 4. [OkHttp使用完全教程](http://www.jianshu.com/p/ca8a982a116b) 32 | OkHttp使用完全教程 33 | 34 | #### 5. [史上最全的架构师图谱](http://www.jianshu.com/p/c8382065bd2b) 35 | 本文是笔者多年来积累和收集的知识技能图谱,有的是笔者原创总结的最佳实践,有的是小伙伴们的分享,其中每个秘籍图谱里面的内容都是互联网高并发架构师应该了解和掌握的知识,笔者索性把这些图谱收集在一起,并且归类便于查找和学习,希望能够帮助到每一位想成为架构师或者已经是架构师的小伙伴,这里我们的标题“史上最全的架构师图谱”是本文的目标,作者计划把这篇文章作为一个开放性的文章,如果读者发现更多的图谱,请联系作者本人,我们把更多的图谱、思维导图汇集在其一起,最终一定能成为互联网上“史上最全的架构师图谱”。 36 | 37 | #### 6. [2017年Android百大框架排行榜](http://t.cn/RoTlNcM) 38 | 排行榜包括四大类: 39 | 40 | * 单一框架:仅提供路由、网络层、UI层、通信层或其他单一功能的框架 41 | * 混合开发框架:提供开发hybrid app、h5与webview结合能力、web app能力的框架。 42 | * 企业级开源项目:可以独立运行的app,有极高的学习价值、思路借鉴意义 43 | * 书籍类开源项目:类似Open-sourc-project这样的导航类项目; 44 | * 大型公司的Android课程的学习目录 tips 45 | 46 | #### 7. [Android HTTP必知必会](http://jayfeng.com/2016/01/08/Android%20HTTP必知必会/) 47 | HTTP协议使用如此广泛,开发者务必要做到“知”,“会”。 48 | 49 | #### 8. [一起来造一个RxJava,揭秘RxJava的实现原理](http://t.cn/RoTHzzD) 50 | 揭秘RxJava的实现原理 51 | 52 | #### 9. [开箱即用的 WebRTC 开发环境](https://blog.piasy.com/2017/06/17/out-of-the-box-webrtc-dev-env/) 53 | 适逢我也正在倒腾一些 WebRTC 的东西,万事开头难,搞事情最怕的就是开始的拦路虎,编译环境、demo 工程、Server 如何部署,这三个问题(尤其是最后一个)想必会浇灭很多朋友的热情之火。经过近两周的不懈奋斗,我总算把这几头拦路虎一一解决,今天我就在这里把这一套开箱即用的 WebRTC 开发环境分享给大家。 54 | 55 | #### 10. [京东618:手机京东开放平台之Crash自动分析处理系统](http://t.cn/RoTQKiF) 56 | 人工处理崩溃报告的过程重复性高、过程繁琐,令人十分痛苦。来自京东的王永杰老师带来了京东手机京东crash自动分析处理系统的实践经验,并展望了利用机器学习实现的智能化崩溃信息分析的未来。 57 | 58 | #### 11. [Android:构建一个典型的音乐 App](http://t.cn/RoAPrOW) 59 | 在过去的英语流利说 5.0 版本中,更新了“每日听力”功能。其实从技术的角度来看,和实现一个音乐 App 没有多大差异。为了保证用户有个良好的收听体验,有一些注意事项是我们需要处理的。文章详细介绍了如何构建一个典型的音乐App。 60 | 61 | #### 12. [Android 组件化 —— 路由设计最佳实践](http://www.jianshu.com/p/8a3eeeaf01e8) 62 | 当前Android的路由库实在太多了,刚开始的时候想为什么要用路由表的库,用Android原生的Scheme码不就好了,又不像iOS只能类依赖,后面越深入就越发现当时想的太简单了,后面看到Retrofit和OkHttp,才想到页面请求本质和网络请求不是一样吗,终于简单高效的路由方案1.0出来了。 63 | 64 | #### 13. [Android开发你需要知道的注解(Annotation)](https://github.com/ShowJoy-com/showjoy-blog/issues/30) 65 | 注解是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证、处理或者进行部署。 66 | 67 | ## 专题栏目 - HTTP 68 | #### 1. [HTTP 协议入门](http://www.ruanyifeng.com/blog/2016/08/http.html) 69 | HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点。 70 | 71 | #### 2. [关于HTTP协议,一篇就够了](http://www.jianshu.com/p/80e25cb1d81a) 72 | HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。 73 | 74 | ![HTTP协议](http://upload-images.jianshu.io/upload_images/2964446-5a35e17f298a48e1.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 75 | 76 | #### 3. [HTTP协议详解(真的很经典)](http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html) 77 | HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 78 | 79 | #### 4. [浅谈HTTP中Get与Post的区别](http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html) 80 | Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。 81 | 82 | #### 5. [httpbin](http://httpbin.org) 83 | httpbin(1): HTTP Request & Response Service 84 | 85 | #### 6. [okhttp](https://github.com/square/okhttp/wiki) 86 | This wiki is your guide to using, and perhaps contributing to OkHttp. 87 | 88 | #### 7. [Android网络编程(一)HTTP协议原理](http://www.jianshu.com/p/1ae1170b9a9a) 89 | 这篇文章是这个系列的开篇,作为移动开发者,开发的应用不免会对网络进行访问,虽然现在已经有很多的开源库帮助我们可以轻而易举的访问网络,但是我们仍要去了解网络访问的原理,这也是一个优秀开发人员所必备的知识点。这篇文章我们就先来了解一下HTTP协议原理。 90 | 91 | #### 8. [深入理解HTTP协议(图文版)](http://blog.csdn.net/zmissm/article/details/20532141) 92 | HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。 93 | 94 | ## 开源库&项目&工具 95 | #### 1. [android-ndk-notes](https://github.com/mcxiaoke/android-ndk-notes) 96 | NDK Beginner's Guide Notes at 2012.07.07 97 | Pro Android C++ with the NDK Notes at 2016.01.06 98 | 99 | #### 2. [PageIndicatorView](https://github.com/romandanylyk/PageIndicatorView) 100 | An page indicator for Android ViewPager 101 | ![PageIndicatorView](https://raw.githubusercontent.com/romandanylyk/PageIndicatorView/master/assets/preview_anim_drop.gif) 102 | 103 | ## 联系方式 104 | * Email:yanghui1986527#gmail.com 105 | * Github: https://github.com/snowdream 106 | * Blog: http://snowdream.github.io/blog/ 107 | * 简书:http://www.jianshu.com/u/748f0f7e6432 108 | * 云栖博客:https://yq.aliyun.com/u/snowdream86 109 | * QQ群: 529327615 110 | * 微信公众号: sn0wdr1am 111 | 112 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 113 | -------------------------------------------------------------------------------- /Android开发技术周报 Issue#2.md: -------------------------------------------------------------------------------- 1 | # Android开发技术周报 Issue#2 2 | 3 | ## 业界新闻 4 | #### 1. [Android Studio 2.3 Beta2 发布](https://www.oschina.net/news/80878/android-studio-2-3-beta2) 5 | Android Studio 2.3 Beata2 发布了。 6 | 新的或值得注意的变化: 7 | * 从 Android Studio 2.3 Beta 1 的 Gradle 3.3 RC1 移动到 Gradle 3.3 8 | * 如果你是本地开发,请更新 LLDB to 2.3.3614996 9 | 10 | #### 2. [Chrome 56 Android 版已引入 WebVR API](https://www.oschina.net/news/80872/chrome-56-android-can-use-webar-api) 11 | 据谷歌开发者博客透露,Chrome 56 for Android 现已发布 Beta 测试版,开发者可以注册开源试用版,后者支持 WebVR API 和 GamePad API 扩展程序。 12 | 13 | #### 3. [微信小程序正式上线 可置于聊天窗口顶部](http://tech.qq.com/a/20170109/000599.htm) 14 | 历经一年的等待后,小程序在2017年1月9日凌晨终于揭开神秘面纱,正式上线。 15 | 16 | ![微信小程序正式上线](http://img1.gtimg.com/tech/pics/hv1/183/35/2177/141568533.png) 17 | 18 | #### 4. [Google 提供 Fastboot 和 ADB 单独下载服务](https://www.oschina.net/news/80796/google-open-platform-tools) 19 | 在许多 Android 用户多次呼吁之后,Google 终于将 ADB 和 Fastboot 作为单独的文件提供给用户下载。以前这些文件只包含在大尺寸的 Android SDK 或 Android Studio 当中提供给用户,现在这种变化意味着它们现在比以往更快,更容易执行和侧载。 20 | 21 | ![Google 提供 Fastboot 和 ADB 单独下载服务](https://static.oschina.net/uploads/space/2017/0107/225422_zT9F_2896879.jpg) 22 | 23 | #### 5. [Google 通知:Android 通知中心风格必须统一](https://www.oschina.net/news/80947/android-notification-center-style-must-be-uniform) 24 | Android 7.0 Nougat 加入了对于通知的直接回复、整合,而第三方 ROM 必须照样画葫芦。这意味着无论购买哪家的 Android 手机,通知中心都会是一个模样。 25 | 26 | 这一规定将从 Android 7.1 开始执行。如果厂商违反规定,将无法访问 Google Play 和其他服务。 27 | 28 | ![Google 通知:Android 通知中心风格必须统一](https://static.oschina.net/uploads/space/2017/0113/101725_1PzR_2896879.png) 29 | ## Android开发 30 | #### 1. [系统相机相册获取图片并裁剪之Android N适配](http://www.jianshu.com/p/dffd7533b636) 31 | 本篇主要对Android调用系统相机裁剪及适配Android N的总结 32 | 33 | #### 2. [Android 开发人员必知的50个秘诀、技巧和资源](https://www.oschina.net/news/80873/50-tips-tips-and-resources-android-developers-must-know) 34 | 作者撰写本文的初衷,是为了罗列出Android Studio有用的提示、技巧、快捷方式和参考资源,将提高您的整体效率和操作性能。 35 | 36 | 37 | #### 3. [用AndroidStudio开发自定义 Gradle plugin](http://t.cn/RM9YIZq) 38 | 本文内容包括: 39 | * 利用AndroidStudio,编写自定义Gradle plugin 40 | * MavenDeployer 发布plugin 41 | * 使用Gradle plugin 42 | 43 | #### 4. [Input系统—ANR原理分析](http://gityuan.com/2017/01/01/input-anr/) 44 | 当input事件处理得慢就会触发ANR,那ANR内部原理是什么,哪些场景会产生ANR呢。 “工欲善其事必先利其器”,为了理解input ANR原理,前面几篇文章疏通了整个input框架的处理流程,都是为了这篇文章而做铺垫。在正式开始分析ANR触发原理以及触发场景之前,先来回顾一下input流程。 45 | 46 | #### 5. [Jack & Jill,Android 新的编译工具链](https://zhuanlan.zhihu.com/p/24708104?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io) 47 | 在2016年随着Android N的发布,Google同时发布了新的编译工具链称之为Jack和Jill。Jack全名为Java Android Compiler Kit,Jill则是Jack Intermediate Library Linker。Jack主要负责将Java代码直接编译为Dalvik字节码等工作,Jill则是对.class文件做处理,生成.jack文件再交由Jack处理。本文对Jack、Jill进行了简单介绍。 48 | 49 | #### 6. [Android性能优化:使用Lint优化代码、去除多余资源](http://blog.csdn.net/u011240877/article/details/54141714) 50 | Lint是Android Studio提供的代码扫描分析工具,它可以帮助我们发现代码结构和质量问题,同时提供一些解决方案,而且这个过程不需要我们手写测试用例。Lint会根据预先配置的检测标准检查Android项目的源文件,发现潜在的bug或者可以优化的地方。Lint就像是一个洁癖患者,虽然可以让我们代码干净许多,但是如果真要把它提示的全解决,恐怕需要很大的工作量。通过本文,大家能够更加了解Lint的工作方式及其使用方法。 51 | 52 | #### 7. [Android上如何实现矩形区域截屏](http://www.jianshu.com/p/0462dae4c808?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io) 53 | 对屏幕进行截屏并裁剪有两种方式:早截图和晚截图。早截图,就是先截取全屏,再让用户对截取到的图片进行修改;与之相对的,晚截图,就是先让用户在屏幕上划好区域,再进行截图和裁剪。其实两者并没有什么太大的区别,本文详细介绍了实现晚截图的方法。 54 | 55 | #### 8. [Gradle的Build Scans是什么功能?](http://mp.weixin.qq.com/s?__biz=MzA3ODg4MDk0Ng==&mid=2651113007&idx=1&sn=a988037902605fc1691cd4b0aebb0efd) 56 | 2016年8月份,Gradle团队发布了Gradle 3.0版本,同时,引入了Gradle云服务(Gradle Cloud Services)。该服务“通过为Gradle构建工具增加新功能,并从新的角度分析你或你团队项目构建的过程,来提升自动化构建的效率和生产力”。其中第一个提供的云服务是Build Scans功能,该功能为免费功能。 57 | 58 | #### 9. [沪江学习Android端重构实践](http://mp.weixin.qq.com/s?__biz=MzA3ODg4MDk0Ng==&mid=2651113015&idx=1&sn=8a83441294728480567d5d44ad53062c) 59 | 对于大的架构重构,相信每个公司都很谨慎。沪江学习的原则是将重构融合在每次迭代中,逐步优化代码的结构。这次针对整个应用的架构的调整背景是,公司移动开发部门的人数和项目越来越多,当初设计的移动端的架构让项目的依赖关系越来越复杂,维护成本也越来越高。刚好赶上公司产品的特别需求,作者的团队决定梳理并优化一下整个项目结构。在实施过程中,依然坚持将整个重构的过程融合在每个迭代中,逐步完成一次大的架构升级。 60 | 61 | #### 10. [Android性能优化-过度绘制解决方案](http://www.jianshu.com/p/cc893397dc9f) 62 | 63 | ![Android性能优化-过度绘制解决方案](http://upload-images.jianshu.io/upload_images/4307880-226e5029d6c83b8d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 64 | 65 | #### 11. [[干货]一种快速毛玻璃虚化效果实现--Android](http://www.jianshu.com/p/7ae7dfe47a70) 66 | 在android设备上快速实现毛玻璃效果 67 | 68 | ![毛玻璃](http://upload-images.jianshu.io/upload_images/281665-7d8e09155f0baf0e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 69 | 70 | ## 开源库&项目&工具 71 | #### 1. [SimpleCropView](https://github.com/IsseiAoki/SimpleCropView) 72 | A simple image cropping library for Android. 73 | 74 | ![SimpleCropView](https://camo.githubusercontent.com/4543749a82bbbcf158fe81e593c85aabeca4fe1b/68747470733a2f2f7261772e6769746875622e636f6d2f77696b692f4973736569416f6b692f53696d706c6543726f70566965772f696d616765732f312e312e302f64656d6f5f62617369635f75736167652e676966) 75 | 76 | #### 2. [MarqueeViewLibrary](https://github.com/gongwen/MarqueeViewLibrary) 77 | 一个帮您快速实现跑马灯效果的library 78 | 79 | ![MarqueeViewLibrary](https://github.com/gongwen/MarqueeViewLibrary/raw/master/screenshot/screen_shot.gif) 80 | 81 | #### 3. [ShimmerRecyclerView](https://github.com/sharish/ShimmerRecyclerView) 82 | A custom recycler view with shimmer views to indicate that views are loading. 83 | 84 | ![ShimmerRecyclerView](https://github.com/sharish/ShimmerRecyclerView/raw/master/screenshots/list_demo.gif) 85 | 86 | #### 4. [手把手教你搭建属于自己的博客](http://t.cn/RM9dLoL) 87 | 自己搭建博客的话,样式的选择也比较自由,可以自己选择,不需要受限于各大平台。 88 | 89 | 大概可以分为以下几个步骤: 90 | 91 | 1. 搭建环境准备(包括 node.js 和 git 环境,gitHub 账户的配置) 92 | 93 | 2. 安装Hexo 94 | 95 | 3. 配置Hexo 96 | 97 | 4. 怎样将 Hexo 与 github page 联系起来 98 | 99 | 5. 怎样发布文章 100 | 101 | 6. 主题推荐 102 | 103 | 7. 主题Net的简单配置 104 | 105 | 8. 添加 sitemap 和 feed 插件 106 | 107 | 9. 添加 404 公益页面 108 | 109 | 110 | ## 联系方式 111 | * Email:yanghui1986527#gmail.com 112 | * QQ群: 529327615 113 | * 微信公众号: sn0wdr1am 114 | 115 | ![sn0wdr1am](https://static.dingtalk.com/media/lADOmAwFCs0BAs0BAg_258_258.jpg) 116 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, and 10 | distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by the copyright 13 | owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all other entities 16 | that control, are controlled by, or are under common control with that entity. 17 | For the purposes of this definition, "control" means (i) the power, direct or 18 | indirect, to cause the direction or management of such entity, whether by 19 | contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the 20 | outstanding shares, or (iii) beneficial ownership of such entity. 21 | 22 | "You" (or "Your") shall mean an individual or Legal Entity exercising 23 | permissions granted by this License. 24 | 25 | "Source" form shall mean the preferred form for making modifications, including 26 | but not limited to software source code, documentation source, and configuration 27 | files. 28 | 29 | "Object" form shall mean any form resulting from mechanical transformation or 30 | translation of a Source form, including but not limited to compiled object code, 31 | generated documentation, and conversions to other media types. 32 | 33 | "Work" shall mean the work of authorship, whether in Source or Object form, made 34 | available under the License, as indicated by a copyright notice that is included 35 | in or attached to the work (an example is provided in the Appendix below). 36 | 37 | "Derivative Works" shall mean any work, whether in Source or Object form, that 38 | is based on (or derived from) the Work and for which the editorial revisions, 39 | annotations, elaborations, or other modifications represent, as a whole, an 40 | original work of authorship. For the purposes of this License, Derivative Works 41 | shall not include works that remain separable from, or merely link (or bind by 42 | name) to the interfaces of, the Work and Derivative Works thereof. 43 | 44 | "Contribution" shall mean any work of authorship, including the original version 45 | of the Work and any modifications or additions to that Work or Derivative Works 46 | thereof, that is intentionally submitted to Licensor for inclusion in the Work 47 | by the copyright owner or by an individual or Legal Entity authorized to submit 48 | on behalf of the copyright owner. For the purposes of this definition, 49 | "submitted" means any form of electronic, verbal, or written communication sent 50 | to the Licensor or its representatives, including but not limited to 51 | communication on electronic mailing lists, source code control systems, and 52 | issue tracking systems that are managed by, or on behalf of, the Licensor for 53 | the purpose of discussing and improving the Work, but excluding communication 54 | that is conspicuously marked or otherwise designated in writing by the copyright 55 | owner as "Not a Contribution." 56 | 57 | "Contributor" shall mean Licensor and any individual or Legal Entity on behalf 58 | of whom a Contribution has been received by Licensor and subsequently 59 | incorporated within the Work. 60 | 61 | 2. Grant of Copyright License. 62 | 63 | Subject to the terms and conditions of this License, each Contributor hereby 64 | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, 65 | irrevocable copyright license to reproduce, prepare Derivative Works of, 66 | publicly display, publicly perform, sublicense, and distribute the Work and such 67 | Derivative Works in Source or Object form. 68 | 69 | 3. Grant of Patent License. 70 | 71 | Subject to the terms and conditions of this License, each Contributor hereby 72 | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, 73 | irrevocable (except as stated in this section) patent license to make, have 74 | made, use, offer to sell, sell, import, and otherwise transfer the Work, where 75 | such license applies only to those patent claims licensable by such Contributor 76 | that are necessarily infringed by their Contribution(s) alone or by combination 77 | of their Contribution(s) with the Work to which such Contribution(s) was 78 | submitted. If You institute patent litigation against any entity (including a 79 | cross-claim or counterclaim in a lawsuit) alleging that the Work or a 80 | Contribution incorporated within the Work constitutes direct or contributory 81 | patent infringement, then any patent licenses granted to You under this License 82 | for that Work shall terminate as of the date such litigation is filed. 83 | 84 | 4. Redistribution. 85 | 86 | You may reproduce and distribute copies of the Work or Derivative Works thereof 87 | in any medium, with or without modifications, and in Source or Object form, 88 | provided that You meet the following conditions: 89 | 90 | You must give any other recipients of the Work or Derivative Works a copy of 91 | this License; and 92 | You must cause any modified files to carry prominent notices stating that You 93 | changed the files; and 94 | You must retain, in the Source form of any Derivative Works that You distribute, 95 | all copyright, patent, trademark, and attribution notices from the Source form 96 | of the Work, excluding those notices that do not pertain to any part of the 97 | Derivative Works; and 98 | If the Work includes a "NOTICE" text file as part of its distribution, then any 99 | Derivative Works that You distribute must include a readable copy of the 100 | attribution notices contained within such NOTICE file, excluding those notices 101 | that do not pertain to any part of the Derivative Works, in at least one of the 102 | following places: within a NOTICE text file distributed as part of the 103 | Derivative Works; within the Source form or documentation, if provided along 104 | with the Derivative Works; or, within a display generated by the Derivative 105 | Works, if and wherever such third-party notices normally appear. The contents of 106 | the NOTICE file are for informational purposes only and do not modify the 107 | License. You may add Your own attribution notices within Derivative Works that 108 | You distribute, alongside or as an addendum to the NOTICE text from the Work, 109 | provided that such additional attribution notices cannot be construed as 110 | modifying the License. 111 | You may add Your own copyright statement to Your modifications and may provide 112 | additional or different license terms and conditions for use, reproduction, or 113 | distribution of Your modifications, or for any such Derivative Works as a whole, 114 | provided Your use, reproduction, and distribution of the Work otherwise complies 115 | with the conditions stated in this License. 116 | 117 | 5. Submission of Contributions. 118 | 119 | Unless You explicitly state otherwise, any Contribution intentionally submitted 120 | for inclusion in the Work by You to the Licensor shall be under the terms and 121 | conditions of this License, without any additional terms or conditions. 122 | Notwithstanding the above, nothing herein shall supersede or modify the terms of 123 | any separate license agreement you may have executed with Licensor regarding 124 | such Contributions. 125 | 126 | 6. Trademarks. 127 | 128 | This License does not grant permission to use the trade names, trademarks, 129 | service marks, or product names of the Licensor, except as required for 130 | reasonable and customary use in describing the origin of the Work and 131 | reproducing the content of the NOTICE file. 132 | 133 | 7. Disclaimer of Warranty. 134 | 135 | Unless required by applicable law or agreed to in writing, Licensor provides the 136 | Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, 137 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, 138 | including, without limitation, any warranties or conditions of TITLE, 139 | NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are 140 | solely responsible for determining the appropriateness of using or 141 | redistributing the Work and assume any risks associated with Your exercise of 142 | permissions under this License. 143 | 144 | 8. Limitation of Liability. 145 | 146 | In no event and under no legal theory, whether in tort (including negligence), 147 | contract, or otherwise, unless required by applicable law (such as deliberate 148 | and grossly negligent acts) or agreed to in writing, shall any Contributor be 149 | liable to You for damages, including any direct, indirect, special, incidental, 150 | or consequential damages of any character arising as a result of this License or 151 | out of the use or inability to use the Work (including but not limited to 152 | damages for loss of goodwill, work stoppage, computer failure or malfunction, or 153 | any and all other commercial damages or losses), even if such Contributor has 154 | been advised of the possibility of such damages. 155 | 156 | 9. Accepting Warranty or Additional Liability. 157 | 158 | While redistributing the Work or Derivative Works thereof, You may choose to 159 | offer, and charge a fee for, acceptance of support, warranty, indemnity, or 160 | other liability obligations and/or rights consistent with this License. However, 161 | in accepting such obligations, You may act only on Your own behalf and on Your 162 | sole responsibility, not on behalf of any other Contributor, and only if You 163 | agree to indemnify, defend, and hold each Contributor harmless for any liability 164 | incurred by, or claims asserted against, such Contributor by reason of your 165 | accepting any such warranty or additional liability. 166 | 167 | END OF TERMS AND CONDITIONS 168 | 169 | APPENDIX: How to apply the Apache License to your work 170 | 171 | To apply the Apache License to your work, attach the following boilerplate 172 | notice, with the fields enclosed by brackets "[]" replaced with your own 173 | identifying information. (Don't include the brackets!) The text should be 174 | enclosed in the appropriate comment syntax for the file format. We also 175 | recommend that a file or class name and description of purpose be included on 176 | the same "printed page" as the copyright notice for easier identification within 177 | third-party archives. 178 | 179 | Copyright [yyyy] [name of copyright owner] 180 | 181 | Licensed under the Apache License, Version 2.0 (the "License"); 182 | you may not use this file except in compliance with the License. 183 | You may obtain a copy of the License at 184 | 185 | http://www.apache.org/licenses/LICENSE-2.0 186 | 187 | Unless required by applicable law or agreed to in writing, software 188 | distributed under the License is distributed on an "AS IS" BASIS, 189 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 190 | See the License for the specific language governing permissions and 191 | limitations under the License. 192 | --------------------------------------------------------------------------------