如之前提到的Android 是基於 Linux 改寫來
所以基本上可以使用 shell 提供我們文字上輸入與輸出 讓我們使用者可以與Linux kernel 互動
了解 Android 整體架構有助於我們日後的分析
#Android 整體架構
主要管理設備硬體 提供基於使用者的權限模型與process隔離
ART主要依靠Linux Kernel管理Threadings與記憶體
Kernel 這邊會提供一些 Security Features
Hardware Anstract Layer 是軟體層提供OS與硬體標準化介面 決定Software 如何去存取硬體部分 HAL會被Andorid動態加載 主要透過共享庫去實現HAL 允許設備製造商實施自定義元件
Android Runtime 簡稱ART 他是一種環境 主要是Android OS 去執行Android APP時 所產生的
他主要被引入於Android 5.0 Lollipop 取代之前 Dalvik virtual machine 這次引入大大堤高效能
主要是因為採取不同編譯策略 ART 會在安裝時編譯應用程式代碼變成Native Machine Code 加快APP 開啟的速度
ART 可以同時跑很多台虛擬機 並兼容之前.dex file 也就是 Dalvik virtual machine 格式
ART 會比 Dalvik 更好不管是在電量或是記憶體管理等等
這裡顧名思義 就是用c/c++ 編寫的library 我們可以用這裡的library 與硬體溝通
ART 與 HAL 這裡也會用到 Native Code 就會去呼叫 Native Code Library
Android APP 可以透過JNI(Java Native interface) 來使用 Native library
開發者可以透過 Android NDK 來使用這些 Native library
補充
Native code 是指可以被特定硬體平台(Android)直接執行無須轉換 強調程式與平台的「原生」關係