谷歌致力於推進種族平等的黑人社區。 怎麼看。
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

FCM生命週期

一個Android框架版本必須為每個目標升級版本FCM,定義什麼框架可以使用和目標FCM版本要求的多個框架兼容性列表(期貨經紀商) - 酮。由於FCM生命週期的一部分,Android的棄用及排除HIDL的HAL,然後修改FCM文件,以反映的情況HAL版本

為了使只有框架,在線旅行社在自己的生態系統,誰延長的供應商合作夥伴的接口也應該棄用,並使用相同的方法刪除HIDL的HAL。

術語

框架兼容性矩陣(FCM) 它指定符合廠商的實現框架要求的XML文件。兼容性矩陣版本,並且新版本被凍結每個框架釋放。每個框架版本包含多個期貨商。
平台FCM版本(S F) 該集的框架版本的所有FCM版本。該框架可以與任何供應商的實施工作,這些期貨經紀商的滿足之一。
FCM版(F) 在一個框架釋放所有的期貨經紀商中最高的版本。
目標FCM版(V) 有針對性的FCM版本(來自S對F),在設備清單中聲明明確,一個供應商實現滿足。一個供應商的實施必須與已發布的FCM產生,儘管它可能宣布在其設備清單更新版本的HAL。
HAL版本一個HAL版本的格式foo@xy ,其中foo是HAL名稱, xy是具體的版本;例如nfc@1.0keymaster@3.0 (根前綴,例如android.hardware ,在整個本文件中省略)。
設備清單一個XML文件,指定了HAL版本的供應商形象提供。一個設備的內容清單由設備的目標FCM版本約束,但是可以列出相對於對應於五。FCM嚴格較新的那些的HAL

在新版本FCM發展

機器人增量FCM版每個框架釋放(如Android 8,8.1等)。在開發過程中,新的compatibility_matrix.current.xml被創建( F )和現有compatibility_matrix.f.xml (其中f < F )不再改變。

要開始一個新的FCM版本開發F

  1. 拷貝最新compatibility_matrix.<F-1>.xmlcompatibility_matrix.current.xml
  2. 更新level的文件中屬性F
  3. 添加相應的創建規則安裝此兼容性矩陣設備。

引入一個新的HAL

在開發過程中,對當前FCM版本引入了新的HAL(的Wi-Fi,NFC等)到Android時F ,加上HAL到compatibility_matrix.current.xml有以下optional設置:

  • optional="false" ,如果設備是船舶與V = F必須用這個HAL推出,

    要么
  • optional="true" ,如果設備是船舶與V = F可以沒有這個HAL推出。

例如,機器人8.1引入cas@1.0作為可選HAL。設備採用Android 8.1推出不需要實現這個HAL,所以下面的條目添加到compatibility_matrix.current.xml (更名為compatibility_matrix.2.xml的Android 8.1發布之後):

<hal format="hidl" optional="true">
    <name>android.hardware.cas</name>
    <version>1.0</version>
    <interface>
        <name>IMediaCasService</name>
        <instance>default</instance>
    </interface>
</hal>

升級HAL(未成年人)

在開發過程中,當一個HAL已經從一個小的版本升級xzx.(z+1)在目前的FCM版本F ,如果該版本是:

  • 需要與發射裝置V = F ,所述compatibility_matrix.current.xml絕狀態x.(z+1)optional="false"
  • 不需要與發射裝置V = F ,所述compatibility_matrix.current.xml必須複製xy-z從和可選性compatibility_matrix.<F-1>.xml和更改版本來xw-(z+1)其中, w >= y )。

例如,機器人8.1引入broadcastradio@1.1作為次要版本1.0 HAL的升級。舊版本, broadcastradio@1.0 ,是可選的與Android 8.0同時推出新版本,設備broadcastradio@1.1 ,是可選的配合Android 8.1的降落裝置。在compatibility_matrix.1.xml

<hal format="hidl" optional="true">
    <name>android.hardware.broadcastradio</name>
    <version>1.0</version>
    <interface>
        <name>IBroadcastRadioFactory</name>
        <instance>default</instance>
    </interface>
</hal>

本條目被複製到compatibility_matrix.current.xml (重命名為compatibility_matrix.2.xml的Android 8.1釋放之後),並作如下修改:

<hal format="hidl" optional="true">
    <name>android.hardware.broadcastradio</name>
    <version>1.0-1</version>
    <interface>
        <name>IBroadcastRadioFactory</name>
        <instance>default</instance>
    </interface>
</hal>

升級HAL(主要)

在開發過程中,當一個HAL具有在當前FCM版本的重大版本升級F ,新的主要版本x.0添加到compatibility_matrix.current.xml有以下optional設置:

  • optional="false" ,只有版本x.0 ,如果設備是船舶與V = F必須推出x.0
  • optional="false" ,但與舊主要版本在同一沿<hal>標籤,如果設備是船舶與V = F必須用這個HAL推出,但可與較早的主要版本推出。
  • optional="true" ,如果設備是船舶與V = F不必啟動HAL。

例如,機器人9引入health@2.0作為主要版本1.0 HAL的升級和棄用1.0 HAL。舊版本, health@1.0 ,是可選的與Android 8.0和Android 8.1的降落裝置。設備與Android 9發動不得提供過時的1.0 HAL,而必須提供新的2.0版本。在compatibility_matrix.legacy.xmlcompatibility_matrix.1.xmlcompatibility_matrix.2.xml

<hal format="hidl" optional="true">
    <name>android.hardware.health</name>
    <version>1.0</version>
    <interface>
        <name>IHealth</name>
        <instance>default</instance>
    </interface>
</hal>

該條目被複製到compatibility_matrix.current.xml (重命名為compatibility_matrix.3.xml與Android 9釋放)和修改如下:

<hal format="hidl" optional="false">
    <name>android.hardware.health</name>
    <version>2.0</version>
    <interface>
        <name>IHealth</name>
        <instance>default</instance>
    </interface>
</hal>

限制:

  • 因為2.0 HAL是在compatibility_matrix.3.xmloptional="false" ,裝置了Android 9發射必須以2.0 HAL發貨。
  • 因為1.0 HAL不在compatibility_matrix.3.xml ,裝置了Android 9發射不能提供1.0 HAL(因為這HAL被認為是不建議使用)。
  • 因為1.0 HAL是存在於遺留/ 1 / 2.XML作為可選HAL(較舊版本FCM該Android的9可以工作),在Android 9框架仍然可以與1.0 HAL(其不被認為是除去HAL版工作)。

新版本的FCM

釋放的FCM版本的過程完全由谷歌為AOSP版本的一部分完成,包括以下步驟:

  1. 重命名compatibility_matrix.current.xmlcompatibility_matrix.F.xml
  2. 確保文件具有屬性level="F"
  3. 相應的編輯生成規則 ,以反映該文件的名稱更改。
  4. 確保所有設備構建和引導。
  5. 更新VTS測試 ,以確保與最新架構(基於航運API級)發射裝置具有目標FCM版V >= F
  6. 發布文件AOSP。

一旦改名並發布這個文件不能被改變。例如,Android的9開發過程中的下列文件內置hardware/interfaces/compatibility_matrices/

  • compatibility_matrix.legacy.xml
  • compatibility_matrix.1.xml
  • compatibility_matrix.2.xml
  • compatibility_matrix.current.xml

當Android的9被釋放, compatibility_matrix.current.xml被重命名為compatibility_matrix.3.xml和下列文件是專門為hardware/interfaces/compatibility_matrices/

  • compatibility_matrix.legacy.xml
  • compatibility_matrix.1.xml
  • compatibility_matrix.2.xml
  • compatibility_matrix.3.xml

VTS測試確保與Android 9發射裝置具有目標FCM版> = 3。

HAL版本棄用

自嘲一個HAL版本是開發商決定(即用於AOSP的HAL,谷歌做出決定)。當一個更高的HAL版本(無論是或大或小)被釋放它可能發生。當給定的HAL foo@xy在FCM版本已經過時F ,這意味著與目標FCM版本的任何設備發射V = F或更高版本必須不實現foo在版本xy或任何比舊版本xy 。不推薦的HAL版本仍然被用於升級設備的框架支持。

當FCM版本F被釋放時,HAL版本foo@xy如果特定HAL版本未在目標FCM下載最新版的FCM明確表示不推薦使用V = F 。對於具有發射裝置V ,滿足下列條件之一為真:

  • 該框架需要更高版本(主要或次要);
  • 該框架不要求HAL了。

例如,在9的Android, health@2.0被引入作為1.0 HAL的主要版本升級。 health@1.0從除去compatibility_matrix.3.xml但存在於compatibility_matrix.legacy.xmlcompatibility_matrix.1.xml ,和compatibility_matrix.2.xml 。因此, health@1.0不推薦使用。

支持取消對目標FCM版本

當某個目標FCM版的有源器件V低於某一閾值下降,則目標FCM版從設定的下一個框架釋放的F除去。這是通過去除完成compatibility_matrix.V.xml從構建規則(使得其不再是對系統的圖像上安裝的),並通過刪除或實現取決於被移除的功能性的任何代碼。用的F目標FCM版本之外對於給定的框架釋放裝置無法升級到該版本。

HAL版本狀態

以下各節描述(按時間順序)一個HAL版本的可能的狀態。

未發行

如果HAL版本是不是在任何公眾和冷凍兼容性矩陣,它被認為是未發行的,並可能在發展。這包括HAL版本是只在compatibility_matrix.current.xml 。例子:

  • 在Android的9(之前的發展compatibiility_matrix.current.xml更名為compatibility_matrix.3.xml ),該health@2.0 HAL被認為是一個未發布的HAL。
  • teleportation@1.0 HAL是不是在任何發行兼容性列表,並且也被認為是未發行的HAL。

釋放電流

如果HAL版本是在任何公共和冷凍兼容性矩陣,它被釋放。例如,FCM第3版被凍結後(當compatibiility_matrix.current.xml更名為compatibility_matrix.3.xml ),並發布到AOSP的health@2.0 HAL被認為是一種釋放,目前HAL版本。

如果HAL版本是在具有最高的FCM版本(不包括公共和冷凍兼容性矩陣compatibility_matrix.current.xml )時,HAL是最新版本(即不建議使用)。例如,現有的HAL版本(如nfc@1.0在引入compatibility_matrix.legacy.xml ),其繼續存在compatibility_matrix.3.xml也被認為是釋放和電流HAL版本。

公佈,但已過時

一個HAL版本已經過時,當且僅當:

  • 它被釋放;
  • 它不是具有最高FCM版本公眾和冷凍兼容性矩陣;
  • 它是在一個公共和冷凍兼容性矩陣,該框架仍然支持。

例子:

因此power@1.0是最新的,但不會被棄用,在Android的9。

刪除

當且僅當一個HAL版本被刪除:

  • 這是以前發布的;
  • 這不是在任何公共和冷凍兼容性矩陣,該框架支持。

兼容性列表是公開的,冷凍的,而不是由框架支持保持代碼庫來定義設置,使得VTS測試可以寫入,以確保刪除的HAL不在新設備移除的HAL版本。

傳統的FCM

目標FCM版本的遺產是所有非高音設備的特殊值。遺留FCM, compatibility_matrix.legacy.xml ,列表在傳統設備上的框架的要求(即,設備推出之前的Android 8.0)。

如果該文件存在與版本的FCM F ,任何非高音設備可以升級到F提供其設備清單是與此文件相兼容。其移除遵循相同的程序的FCM對其他目標FCM版本(活性低於8.0的設備的數量之後,去除下降到低於某個閾值)。

發布FCM版本

發布FCM版本列表下可以找到hardware/interfaces/compatibility_matrices

為了找到與特定的Android版本發布的FCM版本,請參閱Level.h