一、Android系統架構
第一層:Linux內核
包括驅動程序,管理內存、進程、電源等資源的程序
第二層:C/C++代碼庫
包括Linux的.so文件以及嵌入到APK程序中的NDK代碼
第三層:Android SDK API
包括用Java編寫的各種Library
第四層:應用程序
這是程序員與非程序員都要接觸到的應用程序
二、Android系統移植
首先,了解一個概念HAL(硬件抽象層),它位於第二層,普通的程序庫(.so文件);
Android操作系統:AndroidSDK——>HAL——>Linux驅動;
Linux系統:應用程序——>Linux驅動;
先用一個例子說明一下,例如,為硬件平台增加了一個新型的Wi-Fi模塊,就需要為這個Wi-Fi模塊編寫新的驅動程序,或修改原來的驅動程序,以使得Linux內核可以與Wi-Fi模塊正常交互。
由此可知道,Android系統移植是讓Android操作系統在某一個特定硬件平台上運行,即該操作系統支持硬件平台的CPU架構,要讓Android可以識別平台上的各種硬件,主角就是Linux驅動。
注意:在移植Linux驅動時,主要考慮Linux內核版本,就算Android版本不同,只要Linux內核版本相同,Linux驅動就可以相互替換
三、Linux設備驅動
驅動就是直接和硬件交互的一類程序,負責對硬件進行抽象;提供應用程序可方位的API,只要應用程序通過驅動來訪問硬件,就不需要修改應用程序的源代碼。當有很多型號的打印指令不一樣的打印機,同時被同一個應用程序調用,會出現不能使用的情況,當我們進行了驅動程序的開發,通過接口對類進行抽象,就可以大大降低硬件耦合度過高的情況,通過驅動來訪問打印機。