1、Android大致分為四層:
①Linux內(nèi)核層:Android最底層最核心的部分,Linux層包含了Android系統(tǒng)的核心服務(wù),包括硬件驅(qū)動,進(jìn)程管理,安全系統(tǒng)等等。
②庫和運(yùn)行時(shí)
③FramWork層
④應(yīng)用層
Dalvik與ART:Dalvik包含了一整套的Android運(yùn)行環(huán)境虛擬機(jī),每個(gè)App都會分配來保證互相之間不受干擾,并保持獨(dú)立。
使用NDK開發(fā)主要構(gòu)成:AndroidManifest,DalvikClasses
ResourceBundle, Libraries&JNI
Java開發(fā)的App的主要構(gòu)成: AndroidManifest,DalvikClasses
ResourceBundle
2、Android App組件架構(gòu)
四大組件:Activity、BroadCastReciever、ContentProvider、Service
如何協(xié)同合作:Activity負(fù)責(zé)向用戶展示信息和處理結(jié)果,而信息可以通過資源獲取,也可以通過ContentProvider來獲取,或者是Service從后臺計(jì)算、下載、處理的結(jié)果。
組件與組件之間通過Intent來通信、傳遞信息、交換數(shù)據(jù)。
3、Context
Activity、Service、Application都是繼承自Context。
Context被創(chuàng)建的時(shí)間點(diǎn):創(chuàng)建Application、創(chuàng)建Activity、創(chuàng)建Service
獲取Context對象:直接使用this(在匿名內(nèi)部類中必須指定XXXXActivity.this),通過getApplicationContext()方法獲取整個(gè)App的Context。
4、Android系統(tǒng)源代碼目錄與系統(tǒng)目錄
①Android系統(tǒng)源代碼目錄:
- Makefile
- bionic (bionic C庫)
- bootable (啟動引導(dǎo)相關(guān)代碼)
- build (存放系統(tǒng)編譯規(guī)則等基礎(chǔ)開發(fā)包配置)
- cts (Google兼容性測試標(biāo)準(zhǔn))
- dalvik (dalvik 虛擬機(jī))
- development (應(yīng)用程序開發(fā)相關(guān))
- external (android使用的一些開源的模塊)
- vendor (廠商定制代碼)
- frameworks (Framework框架核心)
- out (編譯完成后的代碼輸出目錄)
- hardware (廠商硬件適配層HAL代碼)
- packages (應(yīng)用程序包)
- prebuilt (x86和arm架構(gòu)下預(yù)編譯資源)
- sdk (sdk及模擬器)
- system (底層文件系統(tǒng)庫、應(yīng)用及組件)
②Android系統(tǒng)目錄
?/system/app/這里面放的是一些系統(tǒng)的App
?/system/bin/這里面主要放的是Linux自帶的組件
?/system/build.prop這里記錄的是系統(tǒng)的屬性信息
?/system/fonts/系統(tǒng)字體存放目錄root后可下載TTF格式字體替換原字體,達(dá)到修改系統(tǒng)字體的效果
?/system/framework/系統(tǒng)的核心文件、框架層?/system/lib/存放幾乎所有的共享庫(.so)文件
?/system/media/該目錄用來保存系統(tǒng)提示音、系統(tǒng)鈴聲
?/system/usr/該目錄用來保存用戶的配置文件
?/data/data/這里包含了App的數(shù)據(jù)信息、文件信息、數(shù)據(jù)庫信息等
?/data/app/這個(gè)目錄包含了用戶安裝的App或者升級的App
?/data/system/這個(gè)目錄包含了手機(jī)的各項(xiàng)系統(tǒng)信息
?/data/misc/這個(gè)目錄保存了大部分的Wi-Fi、VPN信息