#### **引言**:
原文出處——[寫給Android App開發人員看的Android底層知識](http://www.cnblogs.com/Jax/p/6864103.html)
>[info] 注意:本系列文章的源碼部分可能和最新版本API的源碼不一樣,估計作者是以Android2.3的源碼為準則的。所以如果發現和找到的源碼不一樣,莫驚慌,找到對應版本的源碼即可。
早在我還是Android菜鳥的時候,有很多技術我都不太明白,也都找不到答案,比如apk是怎么安裝的,比如資源是怎么加載的。
再比如說,每本書都會講AIDL,但我卻從來沒用過。四大組件也是這個問題,我只用過Activity,其它三個組件,不但沒用過,甚至連它們是做什么的,都不是很清楚。
之所以這樣,是因為我一直從事的是電商類App開發工作,對于這類App,基本就是由列表頁和詳情頁組成的,所以我們每天面對的是Activity,會寫這兩類頁面,把網絡底層封裝的足夠強大就夠了。
絕大多數App開發人員,都是如此。
但直到接觸Android的插件化編程和熱修復技術,才發現只掌握上述這些技術是遠遠不夠的。
市場上有很多介紹Android底層的書籍,網上也有很多文章,但大都是給ROM開發人員看的,動輒貼出幾頁代碼,不適合App開發人員去閱讀學習。
我曾經在微信中問過老羅和老鄧,你們寫的書為什么我們App開發人員看不懂啊,他們就呵呵了,跟我說,他們的書就是寫給ROM開發人員看的。
于是,這幾年來,我一直在尋找這樣一類知識,App開發人員看了能有助于他們更好的編寫App程序,而又不需要知道太多這門技術底層的代碼實現。
這類知識分為兩種。
* 一種是知道概念即可,就比如說Zygote,其實App開發人員是不需要了解Zygote的,知道有這么個東西是“孕育天地”的就夠了,類似的還有SurfaceFlinger、WMS這些概念。
* 還有一種是需要知道內部原理,就比如說Binder。關于Binder的介紹鋪天蓋地,但對于我們App開發人員,需要了解的是它的架構模型,只要有Client和Server,以及SM就足夠了。
四大組件的底層通信機制都是基于Binder的,我們需要知道每個組件中,分別是哪些類扮演了Binder Client,哪些類扮演了Binder Server。知道這些概念,有助于我們App開發人員進行插件化編程。
#### **知識點講解**
* Binder
* AIDL
* AMS
* Activity
* Service
* ContentProvider
* 匿名共享內存
* BroadcastReceiver
* PMS及App安裝過程
Android底層知識,還應該包括以下內容,但是和插件化關系不大,也不是我擅長的領域,所以我只列出了大綱,沒有繼續寫下去:
* View和ViewGroup
* Message、Looper和Handler
* 權限管理
* Android SDK工具內部原理
- 前言
- Android 熱補丁技術——資源的熱修復
- 插件化系列詳解
- Dex分包——MultiDex
- Google官網——配置方法數超過 64K 的應用
- IMOOC熱修復與插件化筆記
- 第1章 class文件與dex文件解析
- Class文件解析
- dex文件解析
- class與dex對比
- 第2章 虛擬機深入講解
- 第3章 ClassLoader原理講解
- 類的加載過程
- ClassLoade源碼分析
- Android中的動態加載
- 第4章 熱修復簡單講解
- 第5章 熱修復AndFix詳解
- 第6章 熱修復Tinker詳解及兩種方式接入
- 第7章 引入熱修復后代碼及版本管理
- 第8章 插件化原理深入講解
- 第9章 使用Small完成插件化
- 第10章 使用Atlas完成插件化
- 第11章 課程整體總結
- DN學院熱修復插件化筆錄
- 插件化
- 熱修復
- Android APP開發應掌握的底層知識
- 概述
- Binder
- AIDL
- AMS
- Activity的啟動和通信原理
- App啟動流程第2篇
- App內部的頁面跳轉
- Context家族史
- Service
- BroadcastReceiver
- ContentProvider
- PMS及App安裝過程