aboutsummaryrefslogtreecommitdiff
path: root/zh-cn/devices/architecture/vintf/index.html
blob: ccea0d4001578df1803818d7a56f73897ee4a03c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<html devsite><head>
    <title>供应商接口对象</title>
    <meta name="project_path" value="/_project.yaml"/>
    <meta name="book_path" value="/_book.yaml"/>
  </head>
  <body>
  <!--
      Copyright 2017 The Android Open Source Project

      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.
  -->

<p>本文档介绍供应商接口对象(VINTF 对象)的设计,该对象用于汇总设备的相关信息并通过可查询的 API 提供该信息。<em></em><em></em></p>

<h2 id="about-objects">VINTF 对象设计</h2>
<p>VINTF 对象直接从设备中收集所需的一些信息。其他信息(如清单)以 XML 格式静态描述。</p>

<img src="../images/treble_vintf_mm.png"/>
<figcaption><strong>图 1.</strong> 清单、兼容性矩阵和运行时可收集的信息</figcaption>

<p>VINTF 对象设计为设备和框架组件提供以下内容:</p>

<table>
<tbody><tr>
<th style="width:50%">对于设备</th>
<th>对于框架</th>
</tr>
<tr>
<td>
<ul>
<li>定义静态组件(<a href="/devices/architecture/vintf/objects.html#device-manifest-file">设备清单文件</a>)的结构。</li>
<li>添加构建时支持,以便定义给定设备的设备清单文件。</li>
<li>在运行时定义相应<a href="/devices/architecture/vintf/objects.html#queryable-api">可查询的 API</a>,以用于检索设备清单文件(以及其他可在运行时收集的信息)并将其打包到查询结果中。</li>
</ul>
</td>
<td>
<ul>
<li>定义静态组件(<a href="/devices/architecture/vintf/objects.html#framework-manifest-file">框架清单文件</a>)的结构。</li>
<li>在运行时定义相应<a href="/devices/architecture/vintf/objects.html#queryable-api">可查询的 API</a>,以用于检索框架清单文件并将其打包到查询结果中。</li>
</ul>
</td>
</tr>
</tbody></table>

<p>无论何时请求,VINTF 对象都必须稳定可靠且能提供相同的完整信息(请见<a href="/devices/architecture/vintf/resources.html#caveats">注意事项</a>)。</p>

<h2 id="manifests-matrices">清单和矩阵</h2>
<p>从 Android 8.0 开始,运行时 API 会查询设备上的内容并将该信息发送到<a href="/devices/tech/ota/index.html">无线下载 (OTA)</a> 更新服务器以及其他相关方(例如 CTS <code>DeviceInfo</code>)。有些信息会在运行时进行检索,而有些信息则是静态定义的信息。</p>

<ul>
<li><strong>设备清单</strong>描述了设备可以为框架提供的静态组件。</li>
<li><strong>框架兼容性矩阵</strong>描述了 Android 框架从给定设备中期待获取的内容。此矩阵是一个静态实体,在开发下一个版本的 Android 框架期间会手动确定此矩阵的组成。</li>
<li><strong>框架清单</strong>描述了框架可以为设备提供的高级服务。</li>
<li><strong>设备兼容性矩阵</strong>描述了供应商映像需要框架提供的服务,在设备开发期间会手动确定此矩阵的组成。</li>
</ul>

<p>这两对清单和矩阵必须在 OTA 时进行协调,以确保设备可以获取与设备功能兼容的框架更新。一般来说,清单描述了提供的内容,兼容性矩阵描述了需要的内容。<em></em><em></em></p>

<p>本部分包含有关清单和矩阵的以下详细信息:</p>
<ul>
  <li><a href="/devices/architecture/vintf/objects.html">清单</a>定义了设备清单、框架清单和清单文件架构。</li>
  <li><a href="/devices/architecture/vintf/comp-matrices.html">兼容性矩阵</a>定义了兼容性矩阵的架构。</li>
  <li><a href="/devices/architecture/vintf/fcm.html">FCM 生命周期</a>详细说明了如何弃用和移除 HIDL HAL 以及如何修改 FCM 文件以反映 HAL 版本的状态。</li>
  <li><a href="/devices/architecture/vintf/dm.html">制定设备清单</a>描述了供应商如何在设备清单中为新设备定义和声明目标 FCM 版本,或如何在升级旧设备的供应商映像时实现新的 HAL 版本并递增目标 FCM 版本。</li>
  <li><a href="/devices/architecture/vintf/match-rules.html">匹配规则</a>定义了兼容性矩阵与清单之间成功匹配的规则。</li>
</ul>

</body></html>