一、Android系統架構 第一層:Linux內核 包括驅動程式,管理記憶體、進程、電源等資源的程式 第二層:C/C++代碼庫 包括Linux的.so文件以及嵌入到APK程式中的NDK代碼 第三層:Android SDK API 包括用Java編寫的各種Library 第四層:應用程式 這是程式員與非 ...
一、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,只要應用程式通過驅動來訪問硬體,就不需要修改應用程式的源代碼。當有很多型號的列印指令不一樣的印表機,同時被同一個應用程式調用,會出現不能使用的情況,當我們進行了驅動程式的開發,通過介面對類進行抽象,就可以大大降低硬體耦合度過高的情況,通過驅動來訪問印表機。