Segmentação de pacotes por várias dimensões (segmentação aninhada)

Para segmentar uma pasta em um pacote de recursos ou módulo de pacotes por várias dimensões (formato de compactação de textura, nível de dispositivo, conjunto de países), use a segmentação aninhada.

A segmentação aninhada permite definir critérios de segmentação que combinam até duas dimensões.

Formato

Para segmentar uma pasta por várias dimensões, especifique a lista de dimensões em uma série de sufixos de hashtag para o nome da pasta.

Por exemplo, a segmentação de uma pasta de recursos por formato de compactação de textura ASTC e nível de dispositivo 2 teria esta aparência:

...
.../level1/src/main/assets/character-textures#tcf_astc#tier_2/
...

Se você estiver usando o Gradle para criar seu app, os sufixos de segmentação serão removidos do nome do diretório nos APKs ou pacotes de recursos finais enviados aos dispositivos dos usuários.

Se você estiver usando a bundletool diretamente, especifique se quer que o sufixo seja removido para cada uma das dimensões individualmente em BundleConfig.json. Confira um exemplo de segmentação por nível de dispositivo:

{
  ...
  "optimizations": {
    "splitsConfig": {
      "splitDimension": [
      ...
      {
        "value": "DEVICE_TIER",
        "negate": false,
        "suffixStripping": {
          "enabled": true,
      }],
    }
  }
}

A segmentação aninhada tem suporte na bundletool 1.14.1 e mais recentes e no Plug-in do Android para Gradle 8.2.0-alpha01 e mais recentes, que requer o Gradle 8.1 ou mais recente.

Encontre mais informações sobre como personalizar sua configuração para dimensões individuais na documentação de cada dimensão de segmentação.

Limitações

  • Você pode aninhar no máximo duas dimensões. Em outras palavras, não é possível ter uma pasta segmentada por nível de dispositivo, outra para formato de compactação de textura e uma para conjunto de países ao mesmo tempo: é preciso escolher só duas dimensões.

  • Especifique as duas dimensões aninhadas no mesmo nível do caminho da pasta. Por exemplo, a segmentação de pasta abaixo é proibida, já que #tcf_astc e #tier_2 aparecem em segmentos de caminho diferentes:

.../level1/src/main/assets/character-textures#tcf_astc/level1#tier_2/
  • As dimensões aninhadas precisam ser as mesmas em todo o pacote. Por exemplo, não é possível ter um pacote de recursos aninhando níveis de dispositivo e conjunto de países e outro pacote de recursos aninhando conjunto de países e formato de compactação de textura.

  • Os valores usados para as duas dimensões precisam ser os mesmos em todo o pacote, e você precisa especificar a combinação completa de valores. Por exemplo, se você quiser aninhar o formato de compactação de textura e o conjunto de países com quatro TCFs (ASTC, ETC2, PVRTC, substituto padrão) e três conjuntos de países (LATAM, SEA, substituto padrão), especifique uma pasta para as 12 combinações:

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/…
  • É possível usar a segmentação aninhada e a segmentação de dimensão única em pastas de conteúdo distintas no mesmo pacote de recursos ou módulo de pacotes. Se você usar uma dimensão na segmentação de dimensão única e na segmentação aninhada, o conjunto de valores usado precisará ser sempre o mesmo. Por exemplo, não é possível segmentar por quatro níveis na segmentação de dimensão única por nível de dispositivo e depois usar apenas três níveis ao aninhar com conjuntos de países ou TCFs.