Android 開發(fā)入門
Android 系統(tǒng)占有手機(jī)絕大部分市場,在智能硬件、車聯(lián)網(wǎng)等也廣泛應(yīng)用
Android 簡介
Android 方向
- Android 應(yīng)用開發(fā)
- Android FrameWork開發(fā)
- Android 音視頻開發(fā)
- Android 跨平臺開發(fā)(Flutter,React-Native)
- Android 安全方向(逆向)
Android 平臺架構(gòu)

Android系統(tǒng)結(jié)構(gòu)
Linux 內(nèi)核
- Android內(nèi)核具有和標(biāo)準(zhǔn)的Linux內(nèi)核一樣的功能,主要實(shí)現(xiàn)內(nèi)存管理、進(jìn)程調(diào)度、進(jìn)程間通信(Android增加了一種進(jìn)程間的通信機(jī)制IPC Binder)、設(shè)備驅(qū)動(Display Driver: 顯示驅(qū)動;Camera Driver: 照相機(jī)驅(qū)動;Flash Memory Driver: 閃存驅(qū)動;Binder Driver: IPC通訊驅(qū)動;KeyPad Driver: 鍵映射驅(qū)動;Wifi Driver:Wifi驅(qū)動;Audio Driver:音頻驅(qū)動;Power Management:電量管理驅(qū)動)等
硬件抽象層 (HAL)
- 硬件抽象層 (HAL) 提供標(biāo)準(zhǔn)界面,向更高級別的 Java API 框架顯示設(shè)備硬件功能。HAL 包含多個庫模塊,其中每個模塊都為特定類型的硬件組件實(shí)現(xiàn)一個界面,例如相機(jī)或藍(lán)牙模塊。當(dāng)框架 API 要求訪問設(shè)備硬件時,Android 系統(tǒng)將為該硬件組件加載庫模塊。
Android Runtime 和原生C、C++庫
- Android Runtime由是由Java核心類庫(Core Libraries)和Android虛擬機(jī)共同構(gòu)成
Java核心類庫包括框架層和應(yīng)用層所用到的基本Java庫;Android虛擬機(jī)是一個Android運(yùn)行時的一部分,作用在于連接底層核心、周邊庫與上層應(yīng)用,提供更多的自動管理功能,特別是內(nèi)存方面的。
Android 應(yīng)用架構(gòu)層
- FrameWork層是Android應(yīng)用開發(fā)的核心,為開發(fā)者開發(fā)應(yīng)用時提供基礎(chǔ)的API框架??蚣軐佑啥鄠€系統(tǒng)服務(wù)組成。如AMS,PMS,WMS
AMS即ActivityManagerService主要負(fù)責(zé)系統(tǒng)中四大組件的啟動、切換、調(diào)度及應(yīng)用進(jìn)程的管理和調(diào)度等工作;PMS即PackageManagerService主要負(fù)責(zé)各種APK的安裝,卸載,優(yōu)化和查詢;WMS即WindowManageService 管理著所有的窗口,包括創(chuàng)建、刪除和修改,以及將某個窗口設(shè)置為焦點(diǎn)窗口
Android 應(yīng)用層
- 應(yīng)用層由運(yùn)行在Android設(shè)備上的所有應(yīng)用構(gòu)成,包括預(yù)裝的系統(tǒng)應(yīng)用和自己安裝的第三方應(yīng)用
Android hello world demo演示
- Android Studio 下載安裝
- 新建工程
- 創(chuàng)建模擬器
- 運(yùn)行
- 日志使用
- 斷點(diǎn)調(diào)試
Android Studio 功能介紹
- 主題顏色
- 插件安裝
- 功能區(qū)介紹
- 打包
Android 工程結(jié)構(gòu)介紹
Android 工程結(jié)構(gòu)目錄

Android 工程結(jié)構(gòu)
| Android工程目錄 | 解釋 |
|---|---|
| .gradle文件夾 | 存儲每個使用的gradle版本臨時文件 |
| .idea文件夾 | 用來存儲所有與IDE相關(guān)的項(xiàng)目設(shè)置 |
| build目錄 | 項(xiàng)目編譯生成目錄 |
| gradle目錄 | 管理項(xiàng)目構(gòu)建工具gradle,該目錄有g(shù)radle-wrapper.jar和gradle-wrapper.properties2個文件夾,gradle-wrapper.properties中可以修改gradle版本 |
| .gitignore | git忽略文件 |
| build.gradle | 是整個工程目錄的gradle區(qū)別于app目錄下的build.gradle(模塊的gradele)主要設(shè)置的是聲明倉庫源,gradle的版本號說明 |
| gradle.properties | 是gradle的運(yùn)行環(huán)境配置,比如使用多少內(nèi)存之類的 |
| gradlew和gradlew.bat | 自動配置 gradle環(huán)境的腳本 |
| local.properties | 配置SDK或者NDK的環(huán)境路徑 |
| settings.gradle | 配置項(xiàng)目的依賴關(guān)系 |
| app | 工作的主目錄 |

APP目錄
| App目錄 | 解釋 |
|---|---|
| build | 編譯生成目錄,代碼生成的臨時文件,apk等都在這個目錄 |
| libs | 一般存放第三方庫文件 |
| src | 代碼和資源目錄 |
| androidTest | 測試目錄 |
| main | 代碼目錄 |
| res | 是資源文件目錄 |
| drawable | 存放xml文件,圖片文件夾一般還要drawable-xhdpi,drawable-xxhdpi,drawable-xxxhdpi 需要我們自己新建 |
| drawable-v24 | 是兼容sdk24的,sdk24以上自定義drawble類可以在xml中使用 |
| layout | 布局資源 |
| mipmap-anydpi-v26 | 自適應(yīng)圖標(biāo) |
| mipmap- | 存放APP的icon圖標(biāo)文件 |
| values | 顏色、字體大小、字符串主題之類的資源 |
| values-night | 黑色主題資源 |
| AndroidManifest.xml | 配置必要的組件以及應(yīng)用權(quán)限等 |
| test | 單元測試目錄 |
| .gitignore | 配置模塊git忽略 |
| build.gradle | 模塊的gradle 構(gòu)建腳本 |
| proguard-rules.pro | 混淆配置 |
AndroidManifest

AndroidManifest
| AndroidManifest | 解釋 |
|---|---|
| package | 應(yīng)用包名 |
| uses-permission | 權(quán)限配置 |
| android:allowBackup | 是否允許備份 |
| android:icon | 應(yīng)用的啟動圖標(biāo) |
| android:label | 應(yīng)用的名稱 |
| android:roundIcon | 圓形圖標(biāo) |
| android:supportsRtl | 是否支持從右到左的布局 |
| android:theme | 應(yīng)用的主題 |
| android:name=".MainActivity" | 表示MainActivity的全路徑cn.pwj.mydemo1.MainActivity |
| intent-filter | 意圖過濾器 |