1.開發(fā)工具
Android Studio
Gradle 構(gòu)建
1.Gradle 版本配置和版本升級浴鸿,gradle 采用wrapper方式井氢。可以做到每個項目獨自使用gradle版本岳链。gradle/wrapper/gradle-wrapper.properties并修改distributionUrl=https://services.gradle.org/distributions/gradle-3.0-all.zip到你想升級的版本花竞。
2.構(gòu)建模塊化項目配置org.gradle.parallel=true
3.配置簽名信息
4.設(shè)置第三方maven 地址
5.Gradle 拆分及引用 apply from:"../resource/config.gradle"
6.全局變量定義及引用
7.AndroidManifest占位符,BuildConfig以及資源配置
8.aar本地庫依賴
?Android sdk 編譯版本掸哑,support约急,主題
1.compileSdkVersion:編譯版本,控制可以使用的 API 举户。不會被包含到 APK 中,minSdkVersion :最低兼容版本,targetSdkVersion:應(yīng)用運行時使用的版本,即使使用了高版本API也不會生效遍烦。
2.主題Hoho Theme:4.0之前俭嘁。在4.0之后Android推出了Material Design的概念
3.v4 v7 v13
1)support-v4 : 該系列包用在API Level 4(即Android 1.6)或者更高版本以上。在開發(fā)中服猪,默認都會使用到這個包供填。
2)support-v7 : 該系列包是為了考慮在API level 7(Android 2.1)及以上使用高版本效果而設(shè)計的,v7包含了v4的所有效果(v7中包含v4包的罢猪,即v7依賴于v4)近她,v7當中支持了很多新的效果,最新的版本中還支持了Material Design的多種新的布局和空間膳帕。比如說:RecyclerView粘捎、TabLayout、ToolBar危彩、CardView等等新的包攒磨。
3)support-v13 : 該兼容包系列主要是為了兼容API level 13(Android 3.2)以上的,是為了針對于平板兼容開發(fā)的汤徽,由于平板屏幕較大娩缰,因此該系列增強的對Fragment效果的支持,使得Fragment能夠在平板的各個版中兼容(一般手機開發(fā)者不用該包)谒府。
4)v14(兼容4.0及以上)
5)v17(兼容4.2及以上)主要是為了支持電視設(shè)備拼坎,并為電視設(shè)備提供了一系列的組件。
2.項目架構(gòu)
App應(yīng)用
擴展功能模塊
功能庫Library Common Library 工具庫
3.View 的繪制
View的繪制流程&Activity的生命周期完疫。在ActivityThread中泰鸡,通過attache初始化window,將decorview添加進去。創(chuàng)建viewRootImpl對象壳鹤,view 的繪制流程首先開始于ViewRootImpl的performTraversals方法鸟顺。經(jīng)過三大過程。Measure、layout讯嫂、draw蹦锋。而在Activity時通過onCreate()方法中調(diào)用setContentView();
setContentView 的源碼分析和SnackBar 分析
View和ViewGroup的繪制原理源碼分析。
4.事件分發(fā)
?涉及分發(fā)及核心
么整個事件流向應(yīng)該是從Activity---->ViewGroup--->View 從上往下調(diào)用dispatchTouchEvent方法欧芽,再由View--->ViewGroup--->Activity從下往上調(diào)用onTouchEvent方法莉掂。
5.動畫框架
?逐幀動畫
?補間動畫
?屬性動畫
(1)ValueAnimator:包含了屬性動畫的核心功能,動畫時間千扔,開始和結(jié)束屬性值計算方法等憎妙,這個類也是屬性動畫的基類。
(2)ObjectAnimator:繼承自ValueAnimator曲楚,其實如果要改變一個事物的某個屬性變化會比較經(jīng)常用到這個方法厘唾。
(3)AnimationSet:用于組合多個動畫的,可以設(shè)置要組合動畫的時序關(guān)系龙誊。
(4)TypeEvalutors:都是翻譯成估值器抚垃,其實就是計算下一個運動到的值的類(根據(jù)動畫的開始和結(jié)束還有TimeInterpolation計算出當前時間的屬性值)
(5)TimeInterplator:這個翻譯都是插值器,他是一個描述運動變化的方式趟大,如勻速運動鹤树,加速運動或者先加速后減速等,他有很多子類逊朽,待會會介紹罕伯。
(6)ViewPropertyAnimator:這個類其實就是對View做屬性動畫的一個簡略版,有些情況用到這個會簡單很多叽讳。
6.Handler機制
1)Handler,MessageQueue,與Looper三者關(guān)系分析
2)HandlerThread源碼分析
3)IntentService源碼分析
4)Handler常見應(yīng)用場景和常見問題分析
7.Binder機制
?Binder是一種跨進程的通信方式追他;
從Android Framework層來說,Binder是ServiceManager連接各種Manager和相應(yīng)ManagerService的橋梁岛蚤;
8.流行框架源碼分析
1)EventBus3.0源碼解析
2)AsynTask源碼分析
3)編譯期注解的使用例子分析
4)Butterknife源碼分析(一)
5)Butterknife源碼分析(二)
6)多進程的sharedprefrence解決方案DPreference
7)Volley源碼解析
8)OkHttp源碼分析
9)Builder建造者設(shè)計模式
10)Retrofit2源碼解析
11)Observer觀察者設(shè)計模式
12)責任鏈設(shè)計模式
13)Strategy策略模式
14)Decorator裝飾模式
15)GreenDao3.0數(shù)據(jù)庫
9.性能優(yōu)化
1)冷啟動優(yōu)化
? 1.1.APP啟動分析工具(TraceView湿酸,Systrace)
? 1.2.布局優(yōu)化(扁平化,Merge的使用灭美,ViewStub的使用)
? 1.3.APP啟動速度優(yōu)化實例解析
? 1.4.各種布局的性能對比(LinerLayout推溃,RelativeLayout)
2)內(nèi)存優(yōu)化
? 2.1.LeakCanary原理分析
? 2.2.Android DiskLruCache 源碼解析 硬盤緩存的絕佳方案[轉(zhuǎn)]
? 2.3.LruCache源碼分析
? 2.4.內(nèi)存泄漏的一些坑
? 2.5.MAT內(nèi)存泄漏分析(一)
? 2.6.MAT內(nèi)存泄漏分析(二)
3)網(wǎng)絡(luò)優(yōu)化
4)圖片壓縮性能優(yōu)化
5)數(shù)據(jù)傳輸性能優(yōu)化
6)減小APK體積
7)渲染優(yōu)化
? 7.1.UI卡頓原理分析
? 7.2.UI卡頓檢測分析
? 7.3.BlockCanary原理分析
? 7.4.卡頓優(yōu)化實例解析
8)電量優(yōu)化
? 8.1.APP耗電分析方法與工具(第三方,Google官方Battery Historian)
? 8.2.Android Doze源碼分析
? 8.3.AlarmManager研究 [轉(zhuǎn)]
? 8.4.在Android Lollipop中使用JobScheduler
9)Android ANR在線監(jiān)控原理
10)AndroidGodEye解析之幀率(fps)
11)AndroidGodEye解析之流暢度(sm)
10.網(wǎng)絡(luò)編程
1.TCP問題分析
2.OkHttp源碼分析
3.網(wǎng)絡(luò)傳輸數(shù)據(jù)加密策略(對稱加密AES届腐,DES铁坎,非對稱加密RSA)
4.二進制協(xié)議(mqtt協(xié)議),協(xié)議編解碼(tlv編解碼)
5.Java Socket編程(IO犁苏,NIO)
6.Java多線程編程(隊列硬萍,同步鎖,線程池)
11.FrameWork層源碼的分析
1)應(yīng)用程序內(nèi)Activity的啟動流程
2)startService的流程分析
3 ) 注冊廣播接收器的源碼分析
4)廣播發(fā)送過程源碼解析
5)廣播處理過程源碼解析
6)AssetManager加載資源過程
7)ClassLoader及dex加載過程
8)插件化框架VirtualApk之初始化
9)插件化框架VirtualApk之插件加載
10)插件化框架VirtualApk之Activity啟動
11)插件化框架VirtualApk之Service管理
12)熱修復(fù)框架AndFix完全解析
13)InstantRun源碼分析