Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Obiekt interfejsu dostawcy
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Dokument ten opisuje projekt obiektu interfejsu dostawcy (obiektu VINTF), który agreguje istotne informacje o urządzeniu i udostępnia je za pomocą interfejsu API umożliwiającego wysyłanie zapytań.
Projekt obiektu VINTF
Obiekt VINTF zbiera niektóre potrzebne informacje bezpośrednio z urządzenia. Inne aspekty, takie jak pliki manifestu, są opisywane statycznie w formacie XML.
Rysunek 1. pliki manifestu, tabele zgodności i informacje zbierane w czasie wykonywania;
Projekt obiektu VINTF zapewnia te funkcje dla komponentów urządzenia i ramy:
Urządzenie |
Platforma |
- Określa schemat komponentu statycznego (plik manifestu urządzenia).
- Dodaje obsługę definiowania pliku manifestu urządzenia w czasie kompilacji dla danego urządzenia.
- Określa możliwość zapytań API w czasie wykonywania, która pobiera plik manifestu urządzenia (wraz z innymi informacjami możliwymi do zebrania w czasie wykonywania) i opakowuje je w wynik zapytania.
|
- Określa schemat dla komponentu statycznego (plik manifestu frameworka).
- Definiuje interfejs API, który można zapytać w czasie wykonywania, aby pobrać plik manifestu frameworku i zapakować go do wyniku zapytania.
|
Obiekt VINTF musi być wiarygodny i zawierać pełne informacje niezależnie od tego, kiedy żąda się obiektu (patrz Zastrzeżenia).
Pliki manifestu i macierz
Od Androida 8.0 interfejs API w czasie działania sprawdza, co znajduje się na urządzeniu, i przesyła te informacje do serwera aktualizacji Over-the-Air (OTA) oraz innych zainteresowanych stron (np. CTSDeviceInfo
). Niektóre informacje są pobierane w czasie działania, a niektóre są zdefiniowane statycznie.
- Plik manifestu urządzenia opisuje statyczny komponent tego, co urządzenie może udostępnić platformie.
- Matryce zgodności frameworka opisują, czego framework Androida oczekuje od danego urządzenia. Matryca to element statyczny, którego skład jest określany ręcznie podczas tworzenia kolejnej wersji Androida.
- Plik manifestu frameworku opisuje ogólne usługi, które framework może udostępniać urządzeniu.
- Macierz zgodności urządzeń opisuje usługi, których wymaga obraz dostawcy w ramach platformy. Jego skład jest określany ręcznie podczas tworzenia urządzenia.
Te 2 pary plików manifestów i macierzy muszą być uzgodnione w czasie aktualizacji OTA, aby urządzenie mogło otrzymywać aktualizacje frameworku zgodne z jego możliwościami. Ogólnie rzecz biorąc, plik manifestu opisuje, co jest dostarczane, a macierz zgodności opisuje, co jest wymagane.
Ta sekcja zawiera te informacje o pliku manifestu i pliku matrycy:
- Pliki manifestu definiują manifest urządzenia, manifest platformy i schemat pliku manifestu.
- Zgodność
Macierze definiuje schemat macierzy zgodności.
- Cykl życia FCM zawiera informacje o tym, jak wycofywane i usuwane są interfejsy HAL HIDL oraz jak modyfikowane są pliki FCM, aby odzwierciedlały stan wersji interfejsu HAL.
- W artykule Tworzenie DM opisano, jak dostawcy mogą definiować i deklarować docelową wersję FCM w pliku manifestu urządzenia na potrzeby nowych urządzeń lub implementować nowe wersje HAL i zwiększać wartość docelowej wersji FCM podczas aktualizowania obrazu dostawcy na potrzeby starszych urządzeń.
- Reguły dopasowywania określają reguły dopasowywania matrycy zgodności do pliku manifestu.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-07-27 UTC."],[],[],null,["# Vendor interface object\n\nThis document describes the design of the *vendor interface object*\n(VINTF object), which aggregates relevant information about a device and makes\nthat information available through a *queryable API*.\n\nVINTF object design\n-------------------\n\nA VINTF object gathers some of the information it needs directly from the\ndevice. Other aspects, such as the manifests, are described statically in\nXML.\n\n**Figure 1.** Manifests, compatibility matrixes, and runtime-collectible information.\n\nVINTF object design provides the following for device and framework\ncomponents:\n\n| For the Device | For the Framework |\n|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| - Defines a schema for the static component (the [device manifest file](/docs/core/architecture/vintf/objects#device-manifest-file)). - Adds build time support for defining the device manifest file for a given device. - Defines the [queryable API](/docs/core/architecture/vintf/objects#queryable-api) at runtime that retrieves the device manifest file (along with the other runtime-collectible information) and packages them into the query result. | - Defines a schema for the static component (the [framework manifest file](/docs/core/architecture/vintf/objects#framework-manifest-file)). - Defines the [queryable API](/docs/core/architecture/vintf/objects#queryable-api) at runtime that retrieves the framework manifest file and packages it into the query result. |\n\nThe VINTF object must be reliable and provide the same complete information\nregardless of when the object is requested (see\n[Caveats](/docs/core/architecture/vintf/resources#caveats)).\n\nManifests and matrixes\n----------------------\n\nAs of Android 8.0, a runtime API queries what is on the device and sends that\ninformation to the [Over-the-Air (OTA)](/docs/core/ota)\nupdate server and other interested parties (such as CTS\n`DeviceInfo`). Some information is retrieved at runtime and some of\nit is statically-defined.\n\n- The **device manifest** describes the static component of what the device can provide to the framework.\n- The **framework compatibility matrix** describes what the Android framework expects from a given device. The matrix is a static entity whose composition is determined manually during development of the next release of the Android framework.\n- The **framework manifest** describes high-level services the framework can provide to the device.\n- The **device compatibility matrix** describes the services the vendor image requires of the framework. Its composition is determined manually during the development of the device.\n\nThese two pairs of manifests and matrixes must be reconciled at OTA time to\nensure a device can get framework updates that are compatible with the device's\ncapabilities. In general, a *manifest* describes what is provided and a\n*compatibility matrix* describes what is required.\n\nThis section includes the following details on manifests and matrixes:\n\n- [Manifests](/docs/core/architecture/vintf/objects) defines the device manifest, framework manifest, and manifest file schema.\n- [Compatibility\n Matrixes](/docs/core/architecture/vintf/comp-matrices) defines the schema for the compatibility matrix.\n- [FCM Lifecycle](/docs/core/architecture/vintf/fcm) details how HIDL HALs are deprecated and removed and how FCM files are modifed to reflect the status of the HAL Version.\n- [DM Development](/docs/core/architecture/vintf/dm) describes how vendors can define and declare the Target FCM Version in the device manifest for new devices or implement new HAL versions and increment the Target FCM Version when upgrading the vendor image for old devices.\n- [Matching Rules](/docs/core/architecture/vintf/match-rules) defines the rules for a successful match between a compatibility matrix and a manifest."]]