### 新聞
1. [谷歌推出Google Maps Testing Program測試預覽計劃](http://www.cnbeta.com/articles/507667.htm)
2. [谷歌意欲重返中國 不看好聯想模式](http://www.cnbeta.com/articles/507241.htm)
3. [Google能幫你追蹤丟失的iPhone和Android設備](http://www.cnbeta.com/articles/506961.htm)
4. [Google Home:不基于Android 而是"精心打扮"的Chromecast](http://www.cnbeta.com/articles/506919.htm)
### 教程
1. [應用首頁Activity的單例實現](http://t.cn/R5GfSrj)
目前有一部分android APP需要這樣一種場景,即應用需要保留一個應用首頁主Activity,其它子Activity永遠在主Activity之上,跳轉到子Activity之后,不管以哪種方式跳轉,最終都可以返回到主Activity,這種場景有點類似主桌面的概念。這種場景如果純fragment來實現,需要管理fragment棧,中間如果發生嵌套跳轉,fragment棧的管理會變得非常復雜,所以難免會需要使用部分Activity來實現,并且由于主Activity承載的內容比較豐富,初始化會比較耗時,因此要盡量復用已初始化的Activity。
2. [打通Android Gradle編譯過程的任督二脈](http://t.cn/R5GfCsg)
本文主要是基于自己在工作當中的一些Android Gradle實踐經驗,對gradle相關知識做的一個簡單總結和分享,希望對大家有幫助。首先會講Gradle大概的工作流程和實現原理,并以部分源碼分析佐證。其中包括project中配置數據什么時候取,各個task的創建時機,如何自定義控制編譯過程等。然后著重會分析編譯過程中class到dex這一步的具體過程,以及當初遇到的一些問題和解決方法。
3. [Google官方MVP+Dagger2架構詳解](http://www.jianshu.com/p/01d3c014b0b1)
安卓應用在初始化對象的時候經常需要處理各種依賴關系。比如說網絡訪問中使用Retrofit,Gson,本地存儲中使用shared preference。無一例外,我們都都需要在使用它們的地方進行實例對象構建,而且其中還可能存在著各種各樣的繼承依賴關系。依賴注入(Dependency Injection,簡稱DI)是用于削減計算機程序的耦合問題的一個法則。對象在被創建的時候,由一個調控系統內所有對象的外界實體將其所依賴的對象的引用傳遞給它。也可以說,依賴被注入到對象中。
4. [深入淺出 Retrofit,這么牛逼的框架你們還不來看看?](http://t.cn/R5bXmEH)
Android 開發中,從原生的 HttpUrlConnection 到經典的 Apache 的 HttpClient,再到對前面這些網絡基礎框架的封裝,比如 Volley、Async Http Client,Http 相關開源框架的選擇還是很多的,其中由著名的 Square 公司開源的 Retrofit 更是以其簡易的接口配置、強大的擴展支持、優雅的代碼結構受到大家的追捧。也正是由于 Square 家的框架一如既往的簡潔優雅,所以我一直在想,Square 公司是不是只招處女座的程序員?
5. [開發第三方庫最佳實踐](http://www.jianshu.com/p/0aacd419cb7e)
本文會不定期更新,推薦watch下項目。如果喜歡請star,如果覺得有紕漏請提交issue,如果你有更好的點子可以提交pull request。本文的示例代碼主要是基于作者的經驗來編寫的,若你有其他的技巧和方法可以參與進來一起完善這篇文章。
6. [Android中apk加固完善篇之內存加載dex方案實現原理(不落地方式加載dex)](http://www.wjdiankong.cn/blog/android%E4%B8%ADapk%E5%8A%A0%E5%9B%BA%E5%AE%8C%E5%96%84%E7%AF%87%E4%B9%8B%E5%86%85%E5%AD%98%E5%8A%A0%E8%BD%BDdex%E6%96%B9%E6%A1%88%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86%E4%B8%8D%E8%90%BD%E5%9C%B0/)
時隔半年,困擾的問題始終是需要解決的,之前也算是沒時間弄,今天因為有人在此提起這個問題,那么就不能不解決了,這里寫一篇文章記錄一下吧。那么是什么問題呢?就是關于之前的一個話題:Android中apk加固技術實現,關于這個問題,之前的一篇文章已經說過了,沒有了解的同學可以點擊這里:[Android中apk加固技術實現](http://www.wjdiankong.cn/blog/android%E4%B8%AD%E7%9A%84apk%E7%9A%84%E5%8A%A0%E5%9B%BA%E5%8A%A0%E5%A3%B3%E5%8E%9F%E7%90%86%E8%A7%A3%E6%9E%90%E5%92%8C%E5%AE%9E%E7%8E%B0/)
7. [Binder 源碼分析](https://github.com/xdtianyu/SourceAnalysis/blob/master/Binder%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90.md)
Binder 是一種 Android 進程間通信機制,提供遠程過程調用(Remote Procedure Call)功能。我們最直接的使用是調用 Context.getSystemService() 來獲取系統服務,或直接使用 AIDL 來實現多個程序(APP)間數據交互。Binder 是非常重要的 Android 基礎組件,幾乎所有的進程間通信都是使用 Binder 機制實現的。本文將結合源碼展開講述 Binder ,同時對一些重要知識點提供擴展閱讀的參考。
8. [Service源碼解析](https://github.com/asLody/SourceAnalysis/blob/master/Service%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90.md)
Service是Android四大組件之一。在一般的App開發場景中,它的存在往往是為了保證App切換到后臺后,仍然具備處理數據的能力。Service實現了一套異步的跨進程通信模型,通過Binder機制,Service可以優雅的屏蔽跨進程調用的復雜性。一般來說,一個普通的Service運行在當前進程的主線程中,也就是說,如果不開辟線程,把耗時的操作直接甩在Service,那么系統就會賞你一個ANR(application Not Responding)警告。當然,為了方便做耗時操作,SDK層也提供了IntentService,它開辟了一個Work Thread來順序處理耗時請求,從而避免了阻塞主進程。
9. [如何調試Android Framework?](http://weishu.me/2016/05/30/how-to-debug-android-framework/)
Linus有一句名言廣為人知:Read the fucking source code. 但其實,要深入理解某個軟件、框架或者系統的工作原理,僅僅「看」代碼是遠遠不夠的。就拿Android Framework來說,整個代碼量非常大不說,那些個動輒幾萬行的類如何去理解?所以我今天要說的就是:Debug the fucking source code!!
10. [Android 多主題之坑](http://t.cn/R5b7J7h)
在寫多主題框架時,首先一個概念要分清就是多彩主題和夜間模式。多彩主題其實是白天模式的衍生,與夜間模式是對立的。雖然夜間和多彩是對立,但還是建議多彩主題應該與夜間模式解偶,因為有時夜間模式的顏色變化并不是簡單的顏色取反,受產品設計的影響較大,有時甚至一個tag在夜間和多彩中的取色完全不一樣的,這時如果還在強求通過一次編碼“通吃“多彩和夜間,這樣的做法完全是不明智的,同時也會導致框架易用性變差。
11. [React Native痛點解析之性能調優](http://t.cn/R5b7fF8)
自從React Native出世,雖然官方一直盡可能的優化其性能,為了能讓其媲美原生App的速度,但是現實感覺有點不盡人意。接下來介紹下實踐中遇到的一些性能問題以及優化方案。以下對性能參數的依據是來自于React Native自帶的FPS Monitor.
12. [Attr、Style和Theme詳解](http://t.cn/R5b7cCa)
這三個概念貫穿Android框架的方方面面,是Android程序設計中很重要的一環,理解它們,并能學以致用,不但可以讓你的代碼變得簡潔明了,還可以讓你的應用更加靈活。但目前網上資料對這塊介紹的知識點往往比較散,不是很系統全面,在此特以自己開發經驗總結此文一篇,希望可以幫助初學者把這三個概念徹底搞明白,開發出高質量的Android代碼。
13. [深入理解密碼技術](http://t.cn/R5bZU7D)
DES是1977年美國聯邦信息處理標準中使用的一種對稱密碼技術,曾今被美國和其他國家政府銀行使用。不過現在已被暴力破解,我們除了用它解密以前的密文外,已不再使用DES了。不過這里我們可以用它來了解下什么是對稱加密。
14. [Android 深入理解Loader機制 讓APP輕裝上陣](http://www.jianshu.com/p/385327e35711)
Android開發者都經歷過APP UI開發不當 會造成overDraw,導致APP UI渲染過慢,但是很多人卻沒聽過overLoad,overLoad一般是由于開發者在主線程操作耗時操作,導致程序變慢 甚至出現的anr的現象,那么android早已為這種現象提供完美的解決方案,就是今天給大家說的Loader機制。
15. [如何獲取Android系統中申請對象的信息](http://ragnraok.github.io/get_android_alloc_object_info.html)(By ragnarok)
最近一直在做有關內存方面的優化工作,在做優化的過程,除了關注內存的申請量以及GC的情況之外,我們經常需要想方法找出是那些對象占用了大量內存,以及他們是如何導致GC的,這意味著我們需要獲取對象申請的信息(大小,類型,堆棧等),我們這篇文章來介紹下幾種獲取對象申請信息的方法
16. [Android JNI原理分析](http://gityuan.com/2016/05/28/android-jni/)
JNI(Java Native Interface,Java本地接口),用于打通Java層與Native(C/C++)層。這不是Android系統所獨有的,而是Java所有。眾所周知,Java語言是跨平臺的語言,而這跨平臺的背后都是依靠Java虛擬機,虛擬機采用C/C++編寫,適配各個系統,通過JNI為上層Java提供各種服務,保證跨平臺性。
17. [Material Design技術分享](http://t.cn/R5AwkDN)
因項目需要接觸了近一個月的Material Design,之前只覺得它美麗而神秘,真正接觸起來發現確實不錯。針對這段時間做個小總結,也給廣大戰友們分享點踩坑的經驗。第一部分是針對Material Design的個人總結,第二部分是近段時間接觸到符合Material Design風格的控件以及動畫總結。
18. [Android客戶端性能優化](http://blog.tingyun.com/web/article/detail/155)
眾所周知,一個好的產品,除了功能強大,好的性能也必不可少。有調查顯示,近90%的受訪者會因為APP性能差而卸載,性能也是造成APP用戶沮喪的頭號原因。那Android客戶端性能的指標都有哪些?如何發現和定位客戶端的性能問題?本文結合多個項目的開發實踐,給出了要關注的重要指標項目,以及定位和解決性能問題的一般步驟。
### 開源庫&項目
1. [RxUi](https://github.com/artem-zinnatullin/RxUi)
Implementation of pure functional concept of talking to Android View layer in a Reactive way
2. [CalendarSelector](https://github.com/TUBB/CalendarSelector)
一個日期顯示和選擇庫,可以用來選擇一段連續的和多個不連續的日期,具體的UI完全抽象出來了,可以高度自定義
3. [MarqueeView](https://github.com/sfsheng0322/MarqueeView)
垂直滾動的跑馬燈效果
4. [BubbleView](https://github.com/cpiz/BubbleView)
一個帶箭頭的Android氣泡控件/容器類,支持在布局中通過自定義屬性或代碼進行豐富的定制,包括箭頭朝向、箭頭位置、氣泡弧角、邊線顏色、邊線粗細、顏色填充、填充Padding等等
5. [Android-Material-Themes-Demo](https://github.com/StevenByle/Android-Material-Themes-Demo)
一個教你怎么使用 Material Design 主題的 Demo
6. [TimePickerDialog](https://github.com/JZXiang/TimePickerDialog)
Android時間選擇器,支持年月日時分,年月日,年月,月日時分,時分格式,可以設置最小時間(精確到分)
7. [sailorcast](https://github.com/fire3/sailorcast)
一個面向Android設備的互聯網免費視頻播放客戶端。主要功能是快速的DLNA投射以及無廣告的本地播放
8. [android-easy-gcm](https://github.com/joxad/android-easy-gcm)
Use this library to add GCM to your project, only in a few minutes
9. [EasyRecyclerView](https://github.com/Jude95/EasyRecyclerView)
將開發中常用的RecyclerView的各種需求封裝進庫,并且adapter支持數據管理,Header與Footer添加,加載更多
10. [material-tip](https://github.com/fcannizzaro/material-tip)
Android Library for prompt tip
### 工具
1. [JAADAS](https://github.com/flankerhqd/JAADAS)
Joint Advanced Defect assEsment for android applications
2. [PsMirror](http://www.psmirror.cn/)
一款實時預覽photoshop設計稿的工具。 它讓你極方便地在手機上查看PS中的設計稿, 提升設計效率。 支持android/ios兩個平臺, 支持wifi/usb兩種連接方式, 連接穩定響應速度快。
3. [eventbus3-intellij-plugin](https://github.com/kgmyshin/eventbus3-intellij-plugin)
Plugin to navigate between events posted by EventBus
4. [quick-look-plugins](https://github.com/sindresorhus/quick-look-plugins)
幾個 Mac 下的用來快速預覽相關文件的插件
### 技術之外
1. [如何打造工程師文化?](http://mp.weixin.qq.com/s?__biz=MzA3NTM4NDE2Mw%3Cmark%3E&mid=2649545481&idx=1&sn=ffaf444447fa30f54aa2ae733f20ae68&scene=4#wechat_redirect)
我作為面試官最喜歡問工程師的問題是要告訴我在他們以前的公司,他們喜歡和不喜歡的關于工程師文化的事。我采訪了500多人 - 其中許多來自頂尖高科技公司,如Facebook,谷歌,亞馬遜,Palantir,和Dropbox - 隨著時間的推移,這種面試問題也告訴我優秀工程師喜歡和盡量避免地方。根據采訪答復和我個人經驗,從過去七年跨越谷歌,Ooyala和Quora的工作,我總結了為建立一個良好的工程文化一個團隊可以做的十件事情。
> 版權聲明:歡迎自由轉載-非商用-非衍生-保持署名 |?[Creative Commons BY-NC-ND 4.0](https://creativecommons.org/licenses/by-nc-nd/4.0/)
- 前言
- Android開發技術周報 Issue#90
- Android開發技術周報 Issue#89
- Android開發技術周報 Issue#88
- Android開發技術周報 Issue#87
- Android開發技術周報 Issue#86
- Android開發技術周報 Issue#85
- Android開發技術周報 Issue#84
- Android開發技術周報 Issue#83
- Android開發技術周報 Issue#82
- Android開發技術周報 Issue#81
- Android開發技術周報 Issue#80
- Android開發技術周報 Issue#79
- Android開發技術周報 Issue#78
- Android開發技術周報 Issue#77
- Android開發技術周報 Issue#76
- Android開發技術周報 Issue#75
- Android開發技術周報 Issue#74
- Android開發技術周報 Issue#73
- Android開發技術周報 Issue#72
- Android開發技術周報 Issue#71
- Android開發技術周報 Issue#70
- Android開發技術周報 Issue#69
- Android開發技術周報 Issue#68
- Android開發技術周報 Issue#67
- Android開發技術周報 Issue#66
- Android開發技術周報 Issue#65
- Android開發技術周報 Issue#64
- Android開發技術周報 Issue#63
- Android開發技術周報 Issue#62
- Android開發技術周報 Issue#61
- Android開發技術周報 Issue#60
- Android開發技術周報 Issue#59
- Android開發技術周報 Issue#58
- Android開發技術周報 Issue#57
- Android開發技術周報 Issue#56
- Android開發技術周報 Issue#55
- Android開發技術周報 Issue#54
- Android開發技術周報 Issue#53
- Android開發技術周報 Issue#52
- Android開發技術周報 Issue#51
- Android開發技術周報 Issue#50
- Android開發技術周報 Issue#49
- Android開發技術周報 Issue#48
- Android開發技術周報 Issue#47
- Android開發技術周報 Issue#46
- Android開發技術周報 Issue#45
- Android開發技術周報 Issue#44
- Android開發技術周報 Issue#43
- Android開發技術周報 Issue#42
- Android開發技術周報 Issue#41
- Android開發技術周報 Issue#40