1.2Android系統移植的主要工做

一、Android移植分爲兩部分:應用移植和系統移植;架構

二、應用移植:指將第四層的應用程序一直到某一特定硬件平臺上。操作系統

  (1)爲保證應用程序能在新的平臺上正常運行,須要對源代碼就行一些修改,由於硬件平臺之間以及Android SDk API以前均可能存在差別。若是沒法獲取應用程序的源代碼,只能從新在新的硬件平臺上實現;開放源代碼

  (2)Android應用移植不涉及驅動和HAL程序庫(注:HAL程序庫是Android新增長的硬件抽象層);設計

三、系統移植:指讓Android操做系統在某一特定硬件平臺上運行。io

  (1)使操做系統在特定硬件平臺上運行的條件:編譯

    ①操做系統支持硬件平臺上的CPU架構。Linux內核自己支持不少經常使用的CPU架構,如ARM,X86,PowerPC,所以不須要作過多的改動,但不表明不作改動;基礎

    ②識別硬件平臺上的各類硬件。這些工做主要也是由Linux內核完成的,主角是Linux驅動。硬件

  (2)HAL(Hardware Abstraction Layer,硬件抽象層)程序

    ①位於第二層,也是普通的Linux程序庫(.so文件),Android SDK經過HAL之間訪問Linux驅動(通常的Linux系統都是由應用程序直接訪問驅動)。技術

    ②Google公司這樣設計的目的:Linux內核基於GPL開源協議,可是許多驅動廠商不想開放源代碼,因此增長了HAL層,能夠將Linux驅動的業務邏輯放在HAL層,這樣處理Linux驅動開源技術只是一個空架子。

四、總結:

  (1)Android移植的主要工做:移植Linux驅動和移植HAL;

  (2)Android移植的基本原則是儘量找到驅動和HAL的源代碼,在源代碼的基礎上改比從頭開始編寫容易得多,實在沒法獲取源代碼,就只能從頭開始作起了;

  (3)Android移植很大程度上是Linux內核移植,Linux內核移植主要是移植驅動程序。不一樣Linux版本的驅動程序不能通用,須要修改源代碼,並在新的Linux內核下從新編譯才能夠運行在新的Linux內核版本下。

相關文章
相關標籤/搜索