Configurar o envio no momento da instalação

Os módulos de recursos permitem separar determinados recursos do módulo base do app e os incluir no seu pacote de app. Em seguida, personalize as opções de entrega para controlar quando e como os dispositivos com o Android 5.0 (nível da API 21) ou mais recentes fazem o download dos recursos do app.

Esse tipo de modularização é mais trabalhoso e pode exigir a refatoração do código existente do app. Portanto, analise atentamente quais recursos do seu app seriam mais beneficiados com a disponibilização para usuários sob demanda.

Se você quiser modularizar gradualmente os recursos do app ao longo do tempo, sem mudar o comportamento dele ou personalizar as opções avançadas de entrega, poderá fazer isso criando módulos de recursos configurados para entrega na instalação. Ou seja, é possível modularizar um recurso como um módulo de recursos, mas não ativar opções avançadas para que o recurso esteja disponível quando o usuário instalar seu app.

Além disso, os módulos de recursos configurados para entrega no momento da instalação podem ser desinstalados posteriormente, se não forem mais necessários. Para isso, é necessário configurar como removível.

Esta seção descreve como criar um módulo de recurso para entrega na instalação. Antes de começar, verifique se você está usando o Android Studio 3.5 ou uma versão mais recente e o Plug-in do Android para o Gradle 3.5.0 ou mais recente.

Configurar um novo módulo para entrega na instalação

A maneira mais fácil de criar um novo módulo de recursos é usando o Android Studio 3.5 ou uma versão mais recente. Como os módulos de recursos têm uma dependência inerente no módulo básico do app, eles só podem ser adicionados a projetos de apps já existentes.

Para adicionar um módulo de recursos ao projeto do app usando o Android Studio, faça o seguinte:

  1. Abra o projeto do app no ambiente de desenvolvimento integrado.
  2. Selecione File > New > New Module na barra de menus.
  3. Na caixa de diálogo Create New Module, selecione Dynamic Feature Module e clique em Next.
  4. Na seção Configure your new module, faça o seguinte:
    1. No menu suspenso, selecione a opção Base application module para o projeto do seu app.
    2. Especifique um nome para o módulo em Module name. O ambiente de desenvolvimento integrado usa esse nome para identificar o módulo como um subprojeto do Gradle no arquivo de configurações do Gradle. Quando o pacote de apps é criado, o Gradle usa o último elemento do nome do subprojeto para inserir o atributo <manifest split> no manifesto do módulo de recursos.
    3. Especifique o nome do pacote do módulo. Por padrão, o Android Studio sugere um nome de pacote que combina o nome do pacote raiz do módulo base com o nome do módulo especificado na etapa anterior.
    4. Selecione uma opção em Minimum API level para definir o nível mínimo de API com que o módulo será compatível. Esse valor deve corresponder ao do módulo base.
  5. Clique em Next.
  6. Na seção Module Download Options, faça o seguinte:

    1. Use a opção Module title para especificar o título do módulo em até 50 caracteres. O módulo básico do app precisa incluir o título do módulo como um recurso de string, que você pode traduzir. Durante a criação do módulo usando o Android Studio, o ambiente de desenvolvimento integrado adiciona o recurso de strings ao módulo base para você e injeta a seguinte entrada no manifesto do módulo de recursos:

      <dist:module
          ...
          dist:title="@string/feature_title">
      </dist:module>
      
    2. No menu suspenso em Install-time inclusion, selecione Include module at install-time. O Android Studio injeta o seguinte no manifesto do módulo para refletir sua escolha:

      <dist:module ... >
        <dist:delivery>
            <dist:install-time />
        </dist:delivery>
      </dist:module>
      

      Se você quiser saber como criar um módulo de recurso que possa ser transferido por download após a instalação do app, leia Configurar a entrega sob demanda.

    3. Marque a caixa ao lado de Fusing se você quiser que esse módulo esteja disponível para dispositivos com Android 4.4 (API de nível 20) e anteriores e seja incluído em vários APKs. Isso significa que você pode omiti-lo em dispositivos que não sejam compatíveis com o download e a instalação de APKs divididos. O Android Studio injeta o seguinte no manifesto do módulo para refletir sua escolha:

      <dist:module ...>
          <dist:fusing dist:include="true | false" />
      </dist:module>
      
  7. Clique em Finish.

Quando o Android Studio terminar de criar seu módulo, inspecione o conteúdo no painel Project (selecione View > Tool Windows > Project na barra de menus). O código, os recursos e a organização padrão precisam ser semelhantes aos do módulo padrão do app.

Tornar um módulo de tempo de instalação removível

Pode ser útil criar módulos de recursos para entrega no momento da instalação que tenham a opção de desinstalar mais tarde se não forem mais necessários. Por exemplo, para reduzir o tamanho instalado do seu app, é possível modularizar o conteúdo necessário para treinamento ou integração e desinstalar o módulo de recurso usando a API Play Core. depois que o usuário estiver configurado para usar o app.

Por padrão, os módulos de tempo de instalação não são removíveis. Para marcar um módulo como removível e permitir que ele seja desinstalado, adicione a tag removable e defina o valor dele como true:

<dist:module ... >
  <dist:delivery>
      <dist:install-time>
          <dist:removable dist:value="true"/>
      </dist:install-time>
  </dist:delivery>
</dist:module>