Comunidade

Submissões de Loja como Código: App Store, Google Play e Huawei AppGallery

O texto destaca uma nova funcionalidade do Codename One que automatiza o processo de submissão de apps em lojas como App Store, Google Play e Huawei AppGallery. Após a conclusão bem-sucedida da build, o sistema permite a entrega automática do binário e atualização das notas de lançamento diretamente para as plataformas desejadas, minimizando erros humanos e otimizando o tempo dedicado ao processo.

Compartilhar
Store Submissions As Code: App Store, Google Play, And Huawei AppGallery - DEV Community

Submissões de Loja como Código: App Store, Google Play e Huawei AppGallery

Isso encerra a semana de lançamento. O sábado certificado wizard assinou seu aplicativo. Hoje, a funcionalidade lida com o que vem depois da conclusão da build: upload do binário, preenchimento das notas de lançamento, atualização da lista e repetição em cada loja onde seus usuários estão. PR #5353 cobre a ferramenta do cliente; o trabalho pesado está na nuvem de build.

O que é Codename One? Codename One é um framework open-source para criar aplicativos nativos iOS, Android, desktop e web a partir de uma única base de código Java ou Kotlin. Saiba mais em codenameone.com.

Apos a Build Virar Verde

O lançamento não está concluído quando a build vira verde. Alguém ainda precisa fazer o upload do .ipa para App Store Connect, colar o texto de novidades em dois ou três consoles web, re-enviar as capturas de tela porque a loja sinalizou uma delas e repetir o ritual por localidade. Para um único aplicativo é uma hora irritante. Para uma equipe mantendo dez apps entre App Store, Google Play e AppGallery, é um trabalho parcial que produz nada além de erros de copiar e colar.

A obra anterior mais óbvia é o fastlane, que automatizou isso há anos e funciona bem se você manter uma ferramenta Ruby e configurações de lane por loja. O nosso está integrado ao pipeline que já constrói e assina seu binário, reutiliza as credenciais já armazenadas e cobre a AppGallery.

A console de build agora tem uma ação Submit em cada build bem-sucedida: para o App Store para um iOS .ipa, Mac App Store para um .pkg e Google Play ou Huawei AppGallery para Android. Escolha Beta ou Produção, adicione notas de lançamento e o binário é entregue. Para uma submissão de produção Apple a console rastreia o estado da revisão (processando, em revisão, aprovado ou rejeitado) e pode enviar um email quando isso muda.

A fronteira, declarada simplesmente: a submissão automatizada entrega binários e metadados para um registro de aplicativo existente. Criar o registro do aplicativo e responder aos questionários de privacidade e classificação de conteúdo são etapas manuais uma vez em cada console da loja, e nossa pipeline deliberadamente fica fora dos preços e configurações de compra dentro do aplicativo. Depois dessa configuração única, todos os binários e listagens de lançamento são enviados automaticamente.

Sua Lista é Código Agora

A parte que eu gosto mais é cn1:metadata-push. Sua lista de loja, a descrição, subtítulo, palavras-chave, texto de novidades e capturas de tela, tornam-se uma pasta de arquivos simples em seu repositório:

cn1-metadata/
  apple/
    en-US/
      name.txt              (max 30 chars)
      subtitle.txt          (max 30 chars)
      description.txt       (max 4000 chars)
      keywords.txt          (comma separated)
      whats_new.txt
      screenshots/
        APP_IPHONE_67/1.png 2.png ...
  google/
    en-US/
      name.txt
      subtitle.txt          (short description, max 80 chars)
      description.txt
      whats_new.txt
      screenshots/
        phoneScreenshots/1.png 2.png ...

Os nomes dos arquivos são neutros e mapeiam aos campos de cada loja: subtitle.txt se torna o subtítulo da App Store e a descrição curta do Google Play. Um arquivo que você não inclui mantém o valor atual da loja. O comando mvn cn1:metadata-init cria toda a estrutura, e o push é um único comando:

mvn cn1:metadata-push                 # ambos os stores de cn1-metadata/
 mvn cn1:metadata-push -Dstore=apple   # ou apenas um

Cada campo é validado contra os limites da loja antes de ser armazenado, então um nome muito longo falha rapidamente em sua máquina ao invés de meio caminho durante a submissão. A metadados empurrados são aplicados na próxima vez que você enviar uma build para aquele pacote, e a aplicação é projetada para fazer o melhor esforço: o binário é entregue primeiro, então um campo rejeitado nunca bloqueia uma release, apenas aparece como aviso no console.

Como a lista vive no git e os empurrões são feitos da linha de comando, se encaixa em CI: gere whats_new.txt do seu changelog, empurre, submeta. Dez apps param de ser dez consoles.

Além do Google Play

Aqui está a parte narrativa, e podemos dizer diretamente. A Google oferece uma loja de aplicativos e um framework de aplicativos, e suas ferramentas tratam naturalmente o Play como o ponto final. Não temos uma loja, então não temos interesse em qual vence. Nosso trabalho é alcançar o maior público possível com a menor fricção possível, independentemente da loja.

Isso importa porque uma grande parcela dos usuários do Android não pode instalar aplicativos do Google Play de forma alguma: a maioria do mercado na China, mais muitos dispositivos Huawei em outros lugares. A AppGallery é portanto um alvo de submissão de primeira classe, exatamente como a App Store e o Play. Para as longas caudas dos mercados Android (Xiaomi, OPPO, VIVO, Tencent MyApp e os demais), a compilação pode produzir pacotes para canais de distribuição: seu mesmo APK assinado de lançamento com um ID de canal específico da loja, que o aplicativo lê de volta em tempo de execução com Display.getInstance().getProperty("DistributionChannel", "") para relatórios sobre a fonte do instalador, sem envolver nenhum SDK de terceiros. O Play sempre recebe o pacote padrão e não modificado App Bundle, então nada disso afeta sua conformidade com o Play.

Credenciais são por loja e configuradas uma vez no console: a mesma chave da API do App Store Connect que o assistente de certificados armazenou no sábado, uma conta de serviço do Google Play e um ID de cliente e segredo da API da Huawei.

Os cartões de credenciais de submissão no console de compilação

No que diz respeito ao preço: a submissão manual, o download do seu build e o upload por conta própria permanecem ilimitados e gratuitos em todas as camadas, como sempre foi. Os limites de plano se aplicam apenas à pipeline automatizada.

Contas Organizacionais

Duas pequenas mudanças no Build Cloud foram lançadas junto com isso, e elas se encaixam na mesma temática de equipes enviando muitos aplicativos.

Agora as contas do Build Cloud podem pertencer a uma organização. Os membros compartilham visibilidade nos aplicativos que a equipe constrói, nas análises e relatórios de falhas ao redor deles, e em dados comuns como as credenciais de submissão acima, enquanto os builds e quotas permanecem individuais. As assinaturas e o pagamento são cobrados para a organização em vez de um cartão pessoal.

Configurações de organização no console de compilação

E as contas agora têm exclusão de conta por autoatendimento. Sem ticket de suporte, sem troca de e-mail: uma seção de zona perigosa nas configurações da conta remove permanentemente sua conta e todos os seus dados, incluindo certificados de assinatura, builds, relatórios de falhas e análises, e registros de cobrança. Se você sair, não deve ter que pedir permissão para levar seus dados com você.

Exclusão de conta por autoatendimento

Encerrando a Semana

Essa é a nova versão: uma VM que troca golpes com HotSpot aquecido, um assistente de certificado que parou de se passar por você, AR que você pode depurar na sua mesa e uma linha de montagem de lançamento que termina nas lojas em vez do binário. O fluxo de envio é documentado do início ao fim no novo capítulo da guia do desenvolvedor, "Envio para a App Store". Tente isso na próxima versão e nos diga onde há problemas.

Fonte original

Conteúdo traduzido e adaptado pela redação do Notícias Mobile. Confira também a matéria na fonte original.

Leia a matéria completa