零零散散的學(xué)習(xí)了Android励翼,最近學(xué)習(xí)Android群英傳咙鞍,想借此機會好好系統(tǒng)整理總結(jié)自己的知識败徊,形成一個體系
通過本章學(xué)習(xí)
-Google生態(tài)系統(tǒng) ? ? ? ?
-Android系統(tǒng)架構(gòu) ? ? ?
-android源代碼與系統(tǒng)目錄結(jié)構(gòu)
1.1Google生態(tài)系統(tǒng) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
底層通過最快的C語言保證效率涧团,上層使用Java簡單簇抵、快速進行開發(fā)允瞧,Google利用搜索简软、移動、web的各個入口來掌握互聯(lián)網(wǎng)的控制權(quán)述暂,從而構(gòu)建自己的生態(tài)系統(tǒng)
1.2Android系統(tǒng)架構(gòu) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Android是一個移動操作系統(tǒng)痹升,大致可以分為四層:Linux內(nèi)核層 ?系統(tǒng)運行庫層 ?Framework層 ?應(yīng)用層
1.2.1 Linux ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
手機的Setting選項中包含了內(nèi)核版本,Linux層包含了Android系統(tǒng)的核心服務(wù)畦韭,包括硬件驅(qū)動疼蛾、進程管理、安全系統(tǒng) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
1.2.2 Dalvik與ART ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
每個APP都會分配一個Dalvik虛擬機來保證互相之間不受干擾艺配,特點是運行時編譯察郁。而在Android 5.X版本之后ART模式取代Dalvik,特點安裝時編譯
1.2.3 Standard libraries ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
開發(fā)者在開源環(huán)境中可以使用的開發(fā)庫
1.2.4 Framwork ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Android的API转唉,使用API能快速開發(fā)出Android應(yīng)用程序
1.2.5 Application ? ? ? ? ? ? ?
設(shè)計者希望Android的框架層能起到承上啟下的功能绳锅,讓應(yīng)用的各個組件之間解耦,并通過框架進行統(tǒng)一的調(diào)度酝掩、管理
1.3 Android App組件架構(gòu) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
前面我們講解了Android系統(tǒng)結(jié)構(gòu)鳞芙,而在應(yīng)用層App的組件架構(gòu):Activity ?Service ?ContentProvider BroadCastReciever
1.3.1 Android四大組件如何協(xié)同工作 ? ? ? ? ? ? ? ? ? ? ? ? ? ?
通過資源獲取、ContentProvider獲取其他應(yīng)用的信息期虾、Service從后臺計算原朝、下載、處理的結(jié)果通過Activity向用戶展示信息和處理結(jié)果镶苞;組件與組件之間通過Intent來通信喳坠、傳遞信息、交換數(shù)據(jù)
1.3.2應(yīng)用運用上下文對象 ? ? ?
Context茂蚓、我們可以理解為當(dāng)前對象在程序中所處的一個環(huán)境壕鹉,一個與系統(tǒng)交互的過程。當(dāng)應(yīng)用程序第一次啟動時聋涨,Android系統(tǒng)都會創(chuàng)建一個Application對象晾浴,同時創(chuàng)建Application Context對象,所有組件都擁有這樣一個對象牍白,這個應(yīng)用上下文對象貫穿整個應(yīng)用進程的生命周期脊凰,創(chuàng)建Application、Activity茂腥、Service時也會創(chuàng)建Context上下文對象
1.4 Android系統(tǒng)源代碼目錄與系統(tǒng)目錄
? Android源代碼目錄包含了Android系統(tǒng)的所有源代碼狸涌,從底層驅(qū)動到上層應(yīng)用切省;但是在手機中系統(tǒng)目錄與源代碼的目錄并不是一一對應(yīng)的,而是與源代碼編譯之后帕胆,與打包生成的Image文件的結(jié)構(gòu)相同
1.4.1Android系統(tǒng)源代碼目錄
Android源代碼網(wǎng)站:http://androidxred.com/
Android作為手機操作系統(tǒng)朝捆,我們需要將源代碼編譯后才能使用。Makefile機制:android源文件很多懒豹,不同的功能芙盘、模塊、按類型分別放置在不同的目錄下歼捐,這些模塊通常都會通過一個Makefile的文件來進行管理。它定義了一系列規(guī)則來指定模塊晨汹,哪些文件需要編譯豹储,以及這些文件按照怎樣的順序去編譯√哉猓總結(jié)Makefile的好處就是能自動化編譯剥扣,同時還能做到可控制的編譯
1.4.2Android系統(tǒng)目錄
/system/app/ 存放的是系統(tǒng)的app
/system/bin/ Linux自帶的組件
/system/build.prop 記錄的是系統(tǒng)的屬性信息
/system/font 系統(tǒng)字體存放目錄root后可下載TTF字體替換原來的字體,達到修改系統(tǒng)字體的效果
/system/framework/ 系統(tǒng)的核心文件铝穷、框架層
/system/lib/ 存放幾乎所有的共享庫(.so)文件
/system/media/ 保存系統(tǒng)提示音钠怯、系統(tǒng)鈴聲
/system/media/audio/ 保存Android系統(tǒng)默認的鈴聲,alarm是鬧鐘鈴聲曙聂,notification短信或者提示音晦炊,ringtones來電鈴聲,ui界面音效
/system/usr/ 保存用戶的配置文件
/data/app/ data目錄包含用戶的大部分?jǐn)?shù)據(jù)信息,/data/app/包含了用戶安裝的App或升級App
/data/data/ App的數(shù)據(jù)信息宁脊、文件信息断国、數(shù)據(jù)庫信息,以包名來區(qū)分各個應(yīng)用
/data/system/ 手機的各項系統(tǒng)信息
/data/misc/ 保存大部分的Wi-Fi榆苞、VPN信息
1.4.3 Android App文件目錄
App目錄中的代碼為應(yīng)用程序代碼稳衬,Gradle Scripts為編譯腳本