<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                Android系統的硬件抽象層(Hardware Abstract Layer,HAL)運行在用戶空間中,它向下屏蔽硬件驅動模塊的實現細節,向上提供硬件訪問服務。通過硬件抽象層,Android系統分兩層來支持硬件設備,其中一層實現在用戶空間中,另一層實現在內核空間中。傳統的Linux系統把對硬件的支持完全實現在內核空間中,即把對硬件的支持完全實現在硬件驅動模塊中。 Android系統為什么要把對硬件的支持劃分為兩層來實現呢?我們知道,一方面,Linux內核源代碼是遵循GPL協議的,即如果我們在Android系統所使用的Linux內核中添加或者修改了代碼,那么就必須將它們公開。因此,如果Android系統像其他的Linux系統一樣,把對硬件的支持完全實現在硬件驅動模塊中,那么就必須將這些硬件驅動模塊源代碼公開,這樣就可能會損害移動設備廠商的利益,因為這相當于暴露了硬件的實現細節和參數。另一方面,Android系統源代碼是遵循Apache License協議的,它允許移動設備廠商添加或者修改Android系統源代碼,而又不必公開這些代碼。因此,如果把對硬件的支持完全實現在Android系統的用戶空間中,那么就可以隱藏硬件的實現細節和參數。然而,這是無法做到的,因為只有內核空間才有特權操作硬件設備。一個折中的解決方案便是將對硬件的支持分別實現在內核空間和用戶空間中,其中,內核空間仍然是以硬件驅動模塊的形式來支持,不過它只提供簡單的硬件訪問通道;而用戶空間以硬件抽象層模塊的形式來支持,它封裝了硬件的實現細節和參數。這樣就可以保護移動設備廠商的利益了。 本章介紹Android系統的硬件抽象層的目的在于認識Android系統的體系結構,因為它的實現和使用依次涉及Android系統的硬件驅動模塊、硬件抽象層、外部庫和運行時庫層、應用程序框架層和應用程序層等,如圖2-1所示。 ![](https://box.kancloud.cn/236faa587cda17991b5f2e5a35256b1b_544x413.jpg =544x413) 接下來,我們就以硬件抽象層為中心,首先在Android系統的內核空間中為一個硬件開發驅動程序,接著在用戶空間中為該硬件添加一個硬件抽象層模塊,并且在應用程序框架層中添加一個硬件訪問服務,最后開發一個應用程序來訪問該硬件服務。這樣我們就可以從下到上來認識Android系統的體系結構。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看