aboutsummaryrefslogtreecommitdiff
path: root/zh-cn/devices/architecture/vndk/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'zh-cn/devices/architecture/vndk/index.html')
-rw-r--r--zh-cn/devices/architecture/vndk/index.html110
1 files changed, 82 insertions, 28 deletions
diff --git a/zh-cn/devices/architecture/vndk/index.html b/zh-cn/devices/architecture/vndk/index.html
index 8d8bd521..086c94b1 100644
--- a/zh-cn/devices/architecture/vndk/index.html
+++ b/zh-cn/devices/architecture/vndk/index.html
@@ -32,20 +32,20 @@
<li><strong>AOSP 库的扩展</strong>。Android 8.0 及更高版本要求所有 Android 设备在系统分区被替换为标准常规系统映像 (GSI) 时,都可以通过 CTS 测试。不过,当供应商扩展 AOSP 库以提高性能或为其 HIDL 实现添加额外的功能时,使用标准 GSI 来刷写系统分区可能会破坏供应商的 HIDL 实现(有关如何防止此类破坏的指南,请参阅 <a href="/devices/architecture/vndk/extensions.html">VNDK 扩展</a>)。</li>
</ul>
-<p>为了克服这些挑战,Android 8.0 引入了几项技术,例如 VNDK(如本部分中所述)、<a href="/devices/architecture/hidl/index.html">HIDL</a>、hwbinder、<a href="/devices/architecture/dto/index.html">设备树叠加层</a>和 sepolicy 叠加层。</p>
+<p>为了克服这些挑战,Android 8.0 引入了一些技术,例如 VNDK(本部分对其进行了介绍)、<a href="/devices/architecture/hidl/index.html">HIDL</a>、hwbinder、<a href="/devices/architecture/dto/index.html">设备树叠加层</a>和 sepolicy 叠加层。</p>
<h2 id="resources">VNDK 资源</h2>
<p>本部分包含以下 VNDK 资源:</p>
<ul>
-<li><em><a href="#vndk-concepts">VNDK 概念</a></em>(参见下文)介绍了框架共享库、Same-Process HAL (SP-HAL) 和 VNDK 术语。
+<li><em><a href="#vndk-concepts">VNDK 概念</a></em>:(请参阅下文)介绍了框架共享库、Same-Process HAL (SP-HAL) 和 VNDK 术语。
</li>
-<li><em><a href="/devices/architecture/vndk/extensions.html">VNDK 扩展</a></em>对供应商专属更改进行了分类。例如,具有供应商模块所依赖的扩展功能的库必须复制到供应商分区中,但禁止进行 ABI 不兼容的更改。</li>
-<li><em><a href="/devices/architecture/vndk/build-system.html">VNDK 编译系统支持</a></em>介绍了与 VNDK 相关的编译系统配置和模块定义语法。</li>
-<li><em><a href="/devices/architecture/vndk/deftool.html">VNDK 定义工具</a></em>可帮助您将源代码树迁移到 Android 8.0 及更高版本。</li>
-<li><em><a href="/devices/architecture/vndk/linker-namespace.html">链接器命名空间</a></em>提供对共享库关联的精细控制。
+<li><em><a href="/devices/architecture/vndk/extensions.html">VNDK 扩展</a></em>:对专门针对供应商的更改进行了分类。例如,具有供应商模块所依赖的扩展功能的库必须复制到供应商分区中,但禁止进行 ABI 不兼容的更改。</li>
+<li><em><a href="/devices/architecture/vndk/build-system.html">VNDK 编译系统支持</a></em>:介绍了与 VNDK 相关的编译系统配置和模块定义语法。</li>
+<li><em><a href="/devices/architecture/vndk/deftool.html">VNDK 定义工具</a></em>:可协助您将源代码树迁移到 Android 8.0 及更高版本。</li>
+<li><em><a href="/devices/architecture/vndk/linker-namespace.html">链接器命名空间</a></em>:提供对共享库关联的精细控制。
</li>
-<li><em><a href="/devices/architecture/vndk/dir-rules-sepolicy.html">目录、规则和 sepolicy</a></em> 定义了运行 Android 8.0 及更高版本的设备的目录布局,以及 VNDK 规则和关联的 sepolicy。</li>
-<li><em><a href="../images/vndk_design_android_o.pdf">Android O 中的 VDNK 设计</a></em>演示文稿阐述了 Android O 中使用的 VDNK 基本概念。</li>
+<li><em><a href="/devices/architecture/vndk/dir-rules-sepolicy.html">目录、规则和 sepolicy</a></em>:定义了搭载 Android 8.0 及更高版本的设备的目录结构,以及 VNDK 规则和关联的 sepolicy。</li>
+<li><em><a href="../images/vndk_design_android_o.pdf">Android O 中的 VDNK 设计</a></em>演示文稿:阐述了 Android O 中使用的 VDNK 基本概念。</li>
</ul>
<h2 id="concepts">VNDK 概念</h2>
@@ -66,9 +66,9 @@
<p>根据共享库的特性不同,使用的方法也有差异。因此,框架共享库可分为以下三个子类别:</p>
<ul>
-<li><em></em><em></em>LL-NDK 库是已知稳定的框架共享库。它们的开发者致力于保持其 API/ABI 的稳定性。
+<li><em></em><em></em>LL-NDK 库是已知稳定的框架共享库。它们的开发者致力于保持其 API/ABI 稳定性。
<ul>
- <li>LL-NDK 包含以下库:<code>libEGL.so</code>、<code>libGLESv1_CM.so</code>、<code>libGLESv2.so</code>、<code>libGLESv3.so</code>、<code>libandroid_net.so</code>、<code>libc.so</code>、<code>libdl.so</code>、<code>liblog.so</code>、<code>libm.so</code>、<code>libnativewindow.so</code>、<code>libsync.so</code> 和 <code>libvndksupport.so</code>
+ <li>LL-NDK 包含以下库:<code>libEGL.so</code>、<code>libGLESv1_CM.so</code>、<code>libGLESv2.so</code>、<code>libGLESv3.so</code>、<code>libandroid_net.so</code>、<code>libc.so</code>、<code>libdl.so</code>、<code>liblog.so</code>、<code>libm.so</code>、<code>libnativewindow.so</code>、<code>libneuralnetworks.so</code>、<code>libsync.so</code>、<code>libvndksupport.so</code> 和 <code>libvulkan.so</code>。
</li>
</ul>
</li>
@@ -113,7 +113,6 @@
</p>
<ul>
-<li><code>android.hardware.graphics.allocator@2.0.so</code></li>
<li><code>android.hardware.graphics.common@1.0.so</code></li>
<li><code>android.hardware.graphics.mapper@2.0.so</code></li>
<li><code>android.hardware.renderscript@1.0.so</code> (Renderscript)</li>
@@ -131,8 +130,10 @@
</ul>
<p>
-以下 VNDK-SP 依赖项 (VNDK-SP-Indirect) 对 SP-HAL 不可见:
-<em></em><em></em></p><ul>
+以下 VNDK-SP 依赖项 (VNDK-SP-Private) 对 SP-HAL 来说是不可见的:<em></em><em></em>
+</p>
+
+<ul>
<li><code>libRSCpuRef.so</code> (Renderscript)</li>
<li><code>libRSDriver.so</code> (Renderscript)</li>
<li><code>libbacktrace.so</code></li>
@@ -142,12 +143,6 @@
<li><code>libunwind.so</code></li>
</ul>
-<p>以下私有 VNDK-SP 依赖项 (VNDK-SP-Indirect-Private) 对所有供应商模块均不可见:<em></em></p>
-
-<ul>
-<li><code>libcompiler_rt.so</code> (Renderscript)</li>
-</ul>
-
<p>以下是具有 RS 例外的框架专用库 (FWK-ONLY-RS):<em></em></p>
<ul>
<li><code>libft2.so</code> (Renderscript)</li>
@@ -158,28 +153,87 @@
<ul>
<li><em></em><em></em><em></em>模块是指共享库或可执行文件。</li>
<li><em></em><em></em>进程是指可执行文件产生的操作系统任务。</li>
-<li><em></em>以“框架”打头的术语是指与<strong>系统</strong>分区相关的概念。</li>
-<li><em></em>以“供应商”打头的术语是指与<strong>供应商</strong>分区相关的概念。</li>
+<li>以“框架”打头的术语是指与<strong>系统</strong>分区相关的概念。<em></em></li>
+<li>以“供应商”打头的术语是指与<strong>供应商</strong>分区相关的概念。<em></em></li>
</ul>
<p>例如:</p>
<ul>
-<li><em></em>框架可执行文件是指 <code>/system/bin</code> 或 <code>/system/xbin</code> 中的可执行文件。</li>
-<li><em></em>框架共享库是指 <code>/system/lib[64]</code> 下的共享库。</li>
+<li>框架可执行文件是指 <code>/system/bin</code> 或 <code>/system/xbin</code> 中的可执行文件。<em></em></li>
+<li>框架共享库是指 <code>/system/lib[64]</code> 下的共享库。<em></em></li>
<li><em></em><em></em><em></em>框架模块是指框架共享库和框架可执行文件。</li>
-<li><em></em><em></em>框架进程是指框架可执行文件(例如 <code>/system/bin/app_process</code>)产生的进程。</li>
-<li><em></em>供应商可执行文件是指 <code>/vendor/bin</code> 中的可执行文件。
-</li><li><em></em>供应商共享库是指 <code>/vendor/lib[64]</code> 下的共享库。</li>
+<li>框架进程是指从框架可执行文件衍生而来的进程(例如 <code>/system/bin/app_process</code>)。<em></em><em></em></li>
+<li>供应商可执行文件是指 <code>/vendor/bin</code> 中的可执行文件<em></em>。
+</li><li>供应商共享库是指 <code>/vendor/lib[64]</code> 下的共享库。<em></em></li>
<li><em></em><em></em><em></em>供应商模块是指供应商可执行文件和供应商共享库。</li>
<li><em></em><em></em>供应商进程是指供应商可执行文件(例如 </li>
<code>/vendor/bin/android.hardware.camera.provider@2.4-service</code>)产生的进程。
</ul>
-<aside class="note"><strong>注意</strong>:常规系统映像 (GSI) 代表根据相应分支(与版本分支类似,但修正了一些错误或进行了一些泛化)编译并由 Google 发布的标准 Android 系统映像。<em></em></aside>
+<aside class="note"><strong>注意</strong>:常规系统映像 (GSI) 是指根据相应分支(与版本分支类似,但更正了一些错误或进行了一些泛化)编译并由 Google 发布的标准 Android 系统映像。<em></em></aside>
+
+<h2 id="vndk-versioning">VNDK 版本编号</h2>
+
+<p>在 Android P 中,VNDK 共享库带有版本编号:</p>
+
+<ul>
+ <li><code>ro.vndk.version</code> 系统属性将自动添加到 <code>/vendor/default.prop</code>。</li>
+
+ <li>VNDK 共享库将安装到 <code>/system/lib[64]/vndk-${ro.vndk.version}</code> 中。</li>
+
+ <li>VNDK-SP 共享库将安装到 <code>/system/lib[64]/vndk-sp-${ro.vndk.version}</code> 中。</li>
+
+ <li>动态链接器配置文件将安装到 <code>/system/etc/ld.config.${ro.vndk.version}.txt</code> 中。</li>
+</ul>
+
+<p>系统将按以下算法选择 <code>ro.vndk.version</code> 的值:</p>
+
+<ul>
+ <li>如果 <code>BOARD_VNDK_VERSION</code> 不等于 <code>current</code>,则使用 <code>BOARD_VNDK_VERSION</code>。<em></em></li>
+
+ <li>如果 <code>BOARD_VNDK_VERSION</code> 等于 <code>current</code>:<em></em></li>
+
+ <ul>
+ <li>如果 <code>PLATFORM_VERSION_CODENAME</code> 为 <code>REL</code>,则使用 <code>PLATFORM_SDK_VERSION</code>(例如 <code>28</code>)。</li>
+
+ <li>否则使用 <code>PLATFORM_VERSION_CODENAME</code>(例如 <code>P</code>)。</li>
+ </ul>
+</ul>
+
+<h3 id="upgrading-devices">升级设备</h3>
+
+<p>如果 Android 8.x 设备停用了 VNDK 运行时增强功能(即,编译时未使用 <code>BOARD_VNDK_VERSION</code> 或使用了 <code>BOARD_VNDK_RUNTIME_DISABLE</code>),则在升级到 Android P 时,可能会将 <code>PRODUCT_USE_VNDK_OVERRIDE := false</code> 添加 <code>BoardConfig.mk</code>。</p>
+
+<p>如果 <code>PRODUCT_USE_VNDK_OVERRIDE</code> 为 <code>false</code>,则 <code>ro.vndk.lite</code> 属性将自动添加到 <code>/vendor/default.prop</code>,且其值将为 <code>true</code>。因此,动态链接器将加载 <code>/system/etc/ld.config.vndk_lite.txt</code> 中的链接器命名空间配置,这仅会隔离 SP-HAL 和 VNDK-SP。</p>
+
+<p>如果要将搭载 Android 7.0(或更低版本)的设备升级到 Android P,请将 <code>PRODUCT_TREBLE_LINKER_NAMESPACES_OVERRIDE := false</code> 添加到 <code>BoardConfig.mk</code>。</p>
+
+<h3 id="vendor-test-suite">供应商测试套件 (VTS)</h3>
+
+<p>Android P 供应商测试套件 (VTS) 强制要求存在非空 <code>ro.vndk.version</code> 属性。新发布的设备和升级设备都必须定义 <code>ro.vndk.version</code>。一些 VNDK 测试用例(例如 <code>VtsVndkFilesTest</code> 和 <code>VtsVndkDependencyTest</code>)依赖于 <code>ro.vndk.version</code> 属性来加载符合条件且匹配的 VNDK 库数据集。</p>
+
+<p>如果 <code>ro.product.first_api_level</code> 属性大于 27,则不能定义 <code>ro.vndk.lite</code> 属性。
+如果在新推出的 Android P 设备中定义了 <code>ro.vndk.lite</code>,则 <code>VtsTreblePlatformVersionTest</code> 将失败。</p>
<h2 id="document-history">文档历史记录</h2>
-<p>本部分跟踪了对 VNDK 文档的更改。</p>
+<p>本部分跟踪了对 VNDK 文档进行的更改。</p>
+
+<h3 id="changes-p">Android P 的变化</h3>
+
+<ul>
+ <li>添加了“VNDK 版本编号”部分。</li>
+
+ <li>添加了“VTS”部分。</li>
+
+ <li>更改了部分 VNDK 类别的名称:</li>
+ <ul>
+ <li>LL-NDK-Indirect 已改名为 LL-NDK-Private。</li>
+ <li>VNDK-Indirect 已改名为 VNDK-Private。</li>
+ <li>VNDK-SP-Indirect-Private 已改名为 VNDK-SP-Private。</li>
+ <li>移除了 VNDK-SP-Indirect。</li>
+ </ul>
+</ul>
<h3 id="changes-81">Android 8.1 的变化</h3>