Os módulos de recursos permitem separar determinados recursos do módulo básico do app e incluí-los no pacote de apps. Com o Play Feature Delivery, o usuário pode fazer o download desses componentes sob demanda e instalá-los depois da instalação do APK básico do app.
Por exemplo, imagine um app de mensagens de texto com a funcionalidade de capturar e enviar mensagens com imagens, mas apenas uma pequena porcentagem de usuários envia esse tipo de mensagem. Pode ser interessante incluir o envio de mensagens com imagens como um módulo de recursos disponível para download. Dessa forma, o download inicial do app será menor para todos os usuários, e apenas os usuários que enviarem mensagens com imagens precisarão fazer o download desse componente extra.
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. Para entender melhor as diretrizes e os casos de uso mais indicados para recursos sob demanda, leia Práticas recomendadas de UX para entrega on demand.
Para modularizar gradativamente os recursos do app ao longo do tempo sem ativar opções avançadas de entrega, como a entrega sob demanda, configure a entrega no momento da instalação.
Esta página ajuda você a adicionar um módulo de recursos ao seu projeto de app e configurá-lo para entrega sob demanda. 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 sob demanda
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, só é possível adicioná-los a projetos de apps existentes.
Para adicionar um módulo de recursos ao projeto do app usando o Android Studio, faça o seguinte:
- Abra o projeto do app no ambiente de desenvolvimento integrado.
- Selecione File > New > New Module na barra de menus.
- Na caixa de diálogo Create New Module, selecione Dynamic Feature Module e clique em Next.
- Na seção Configure your new module, faça o seguinte:
- No menu suspenso, selecione a opção Base application module para o projeto do seu app.
- 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. - 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.
- 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 básico.
- Clique em Next.
Na seção Module Download Options, faça o seguinte:
Use a opção Module title para especificar o título do módulo em até 50 caracteres. A plataforma usa esse título para identificar o módulo para o usuário, por exemplo, durante uma confirmação se o usuário quer fazer o download do módulo. Por isso, o módulo base 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 string 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>
No menu suspenso em Install-time inclusion, selecione Do not 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:on-demand/> </dist:delivery> </dist:module>
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 anterior e seja incluído em vários APKs. Isso significa que você pode ativar o comportamento sob demanda para esse módulo e desativar a fusão para omiti-lo em dispositivos que não são 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>
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.
Depois de implementar um recurso que você quer transferir por download sob demanda, saiba como solicitá-lo usando a biblioteca Play Core.
Implantar o app
Durante o desenvolvimento do app com compatibilidade com o Play Feature Delivery, você pode
implantá-lo em um dispositivo conectado como faria normalmente, selecionando
Run > Run na barra de menus ou clicando em Run na
barra de ferramentas.
Se o projeto do app incluir um ou mais módulos de recursos, você poderá escolher quais incluir ao implantar o app modificando a configuração de execução/depuração existente da seguinte maneira:
- Selecione Run > Edit Configurations na barra de menus.
- No painel à esquerda da caixa de diálogo Run/Debug Configurations, selecione a configuração de Android App que você quer usar.
- Em Dynamic features to deploy, na guia General, marque a caixa ao lado de cada módulo de recursos que você quer incluir durante a implantação do app.
- Clique em OK.
Por padrão, o Android Studio não implementa seu app usando pacotes de apps. Em vez disso, o ambiente de desenvolvimento integrado cria e instala no dispositivo APKs que são otimizados para a velocidade de implantação, não para o tamanho do APK. Para configurar o Android Studio para compilar e implantar APKs e experiências instantâneas a partir de um pacote de apps, modifique sua configuração de execução/depuração.
Outros recursos
Para saber mais sobre o uso do envio de recursos do Google Play, use os recursos a seguir.
Amostras
- Amostra da API PlayCore (link em inglês), que demonstra o uso da API PlayCore para solicitar e fazer o download de recursos sob demanda.
- Amostra de carregamento de código dinâmico (link em inglês), que demonstra três abordagens diferentes para acessar o código com segurança no módulo de recursos instalado.
Codelabs
- Módulos sob demanda, que ajuda você a criar um app que faz o download de recursos sob demanda e os instala.
Postagens do blog
- Novos recursos para desenvolver, lançar e expandir seus negócios no Google Play (link em inglês)
- As atualizações mais recentes do Android App Bundle, incluindo a API de outros idiomas (link em inglês)
- Plaid : uma história de modularização (link em inglês)