若要按多个维度(纹理压缩格式、设备层级、国家/地区组合)定位资源包或 bundle 模块中的文件夹,您可以使用嵌套定位。
借助嵌套定位,您可以定义最多包含 2 个定位维度的定位条件。
格式
若要按多个维度定位文件夹,请在文件夹名称的一系列 # 标签后缀中指定维度列表。
例如,如需按纹理压缩格式 ASTC 和设备层级 2 定位资源文件夹,定位条件应如下所示:
...
.../level1/src/main/assets/character-textures#tcf_astc#tier_2/
...
如果您使用 Gradle 构建应用,系统会从分发给用户设备的最终 APK 或资源包中的目录名称里删除定位后缀。
如果直接使用 bundletool,请指定是否要在 BundleConfig.json
中分别删除每个维度的后缀。以设备层级定位为例:
{
...
"optimizations": {
"splitsConfig": {
"splitDimension": [
...
{
"value": "DEVICE_TIER",
"negate": false,
"suffixStripping": {
"enabled": true,
}],
}
}
}
bundletool 1.14.1 或更高版本以及 Android Gradle 插件 8.2.0-alpha01 或更高版本均支持嵌套定位,其中 Android Gradle 插件 8.2.0-alpha01 或更高版本需要使用 Gradle 8.1 或更高版本。
如需详细了解如何为每个维度自定义具体配置,请参阅针对每个定位维度的文档。
限制
您最多只能使用 2 个嵌套维度。换句话说,您无法同时按设备层级、纹理压缩格式和国家/地区组合来定位文件夹,而是只能选择其中 2 个维度。
您应在文件夹路径的同一级别指定所需的 2 个嵌套维度。例如,禁止使用以下文件夹定位条件,因为 #tcf_astc 和 #tier_2 显示在不同的路径片段中:
.../level1/src/main/assets/character-textures#tcf_astc/level1#tier_2/
在整个 bundle 中使用的嵌套维度必须保持一致。例如,不能对一个资源包嵌套设备层级和国家/地区组合,而对另一个资源包嵌套国家/地区组合和纹理压缩格式。
您在整个 bundle 中针对 2 个维度使用的值必须相同,并且您必须指定值的完整组合。例如,如果您想要嵌套纹理压缩格式 (TCF) 和国家/地区组合,并且您有 4 个 TCF(ASTC、ETC2、PVRTC、默认后备选项)和 3 个国家/地区组合(拉丁美洲、东南亚、默认后备选项),则必须为所有 12 个组合分别指定一个文件夹:
level1/textures#countries_latam#tcf_astc/…
level1/textures#countries_latam#tcf_etc2/…
level1/textures#countries_latam#tcf_pvrtc/…
level1/textures#countries_latam/…
level1/textures#countries_sea#tcf_astc/…
level1/textures#countries_sea#tcf_etc2/…
level1/textures#countries_sea#tcf_pvrtc/…
level1/textures#countries_sea/…
level1/textures#tcf_astc/…
level1/textures#tcf_etc2/…
level1/textures#tcf_pvrtc/…
level1/textures/…
- 您可以针对同一资源包或 bundle 模块中的独特内容文件夹,既使用嵌套定位又使用单个维度定位。如果您要在单个维度定位和嵌套定位中都使用某个维度,则您使用的那组值必须始终相同。例如,您不能在采用单个维度设备层级定位时按 4 个层级进行定位,而结合使用国家/地区组合或 TCF 维度进行嵌套定位时只使用 3 个层级。