# DoncMobile App -- Guia de Release Android **Versao:** v1.0 -- Mar 2026 **Plataforma:** Android **Framework:** net10.0-android **Versao atual:** 3.5.2 (build 29) ## 01 -- Versao semantica A versao do app fica em dois campos no arquivo DoncMobile.App.csproj. O AndroidManifest.xml nao precisa ser editado -- o .NET MAUI injeta os valores automaticamente durante o build. - **ApplicationDisplayVersion** -- Exemplo: 3.5.2. Versao legivel pelo usuario. Aparece na Play Store e nas configuracoes do app. Segue semantica MAJOR.MINOR.PATCH. - **ApplicationVersion** -- Exemplo: 29. Numero inteiro interno do Android (versionCode). Deve ser incrementado em +1 a cada release. A Play Store rejeita se diminuir. ```xml 3.5.2 29 ``` > **ALERTA:** Nao edite o AndroidManifest.xml para versao. O .NET MAUI gera o android:versionName e android:versionCode automaticamente a partir do .csproj. ## 02 -- Arquivos gerados O comando de release gera dois arquivos principais em bin/Release/net10.0-android/: - **com.br.doncmobile-Signed-3.5.2.apk** -- APK assinado. Este arquivo e enviado ao cliente para instalacao direta. - **com.br.doncmobile-Signed-3.5.2.aab** -- Android App Bundle. Formato otimizado para publicacao na Google Play Store. - **publish/com.br.doncmobile-Signed.apk** -- Copia do APK sem a versao no nome. **Caminho completo do output:** src/DoncMobile.App/bin/Release/net10.0-android/com.br.doncmobile-Signed-{versao}.apk ## 03 -- Passo a passo ### Passo 1 -- Atualizar a versao no .csproj Abra src/DoncMobile.App/DoncMobile.App.csproj e edite os dois campos de versao. Sempre incremente o ApplicationVersion em +1. ### Passo 2 -- Limpar a pasta de release anterior Delete a pasta bin/ e obj/ para garantir que o build parta do zero. ```bash # Opcao 1 -- via dotnet CLI (recomendado) dotnet clean -c Release -f net10.0-android # Opcao 2 -- remocao manual completa (build do zero garantido) rm -rf bin/ obj/ ``` > **ALERTA:** dotnet clean nao remove os .apk/.aab ja gerados. ### Passo 3 -- Executar o comando de release ```bash dotnet publish -c Release -f net10.0-android ``` O que esse comando faz: Compila em configuracao Release, desabilita AOT (configurado no .csproj), gera o .aab e o .apk, assina automaticamente com o keystore do projeto. ### Passo 4 -- Localizar o APK e subir no Google Drive O arquivo final estara em: `src/DoncMobile.App/bin/Release/net10.0-android/com.br.doncmobile-Signed-{versao}.apk` Suba o .apk no Google Drive e copie o link de compartilhamento. Configure o Drive para "qualquer pessoa com o link pode visualizar". ### Passo 5 -- Atualizar o banco -- tabela ContratoSaas ```sql BEGIN TRAN UPDATE ContratoSaas SET LinkDownloadAtualizacaoApp = 'https://drive.google.com/file/d/{ID_DO_ARQUIVO}/view?usp=sharing', AtualizacaoObrigatoria = 1, -- 1 = obrigatoria | 0 = opcional MensagemAtualizacao = 'Nova versao disponivel (v3.5.3)', CodigoVersaoApp = '3.5.3' WHERE id IN (1004, 1073, 1042, 1049) -- IDs dos contratos que verao o banner -- Confira os registros antes de confirmar: SELECT id, CodigoVersaoApp, AtualizacaoObrigatoria, MensagemAtualizacao, LinkDownloadAtualizacaoApp FROM ContratoSaas WHERE id IN (1004, 1073, 1042, 1049) COMMIT -- ou ROLLBACK se algo estiver errado ``` | Campo | O que preencher | |-------|----------------| | LinkDownloadAtualizacaoApp | Link do Google Drive do APK gerado neste release | | AtualizacaoObrigatoria | 1 = exibe banner que bloqueia o app ate atualizar, 0 = banner informativo | | MensagemAtualizacao | Texto exibido no banner -- inclua a versao | | CodigoVersaoApp | Versao semantica (ex: 3.5.3) -- deve bater com o ApplicationDisplayVersion | | WHERE id IN (...) | IDs dos ContratoSaas que receberao o banner | > **ALERTA:** Use BEGIN TRAN / COMMIT sempre. Execute o SELECT de conferencia antes do COMMIT. ## 04 -- Regras de versao O ApplicationDisplayVersion segue o padrao semantico MAJOR.MINOR.PATCH. | Campo | Quando incrementar | Exemplo | Resetar os outros? | |-------|-------------------|---------|---------------------| | MAJOR | Mudanca que quebra fluxo existente ou redesign completo | 2.x.x -> 3.0.0 | Sim -- MINOR e PATCH voltam a 0 | | MINOR | Nova funcionalidade adicionada (nova tela, nova feature) | 3.4.x -> 3.5.0 | Sim -- PATCH volta a 0 | | PATCH | Correcao de bug, ajuste visual, melhoria sem nova feature | 3.5.2 -> 3.5.3 | Nao | | Campo | Regra obrigatoria | |-------|-------------------| | ApplicationDisplayVersion | Seguir MAJOR.MINOR.PATCH. Nunca diminuir. Sempre diferente da versao anterior. | | ApplicationVersion | Sempre incrementar +1 a cada release, sem excecao. A Play Store rejeita versao igual ou menor. | > **ALERTA:** Nunca reutilize um ApplicationVersion ja publicado. Se um APK com ApplicationVersion=29 ja foi instalado, publicar outro APK com o mesmo numero 29 impede a atualizacao naquele dispositivo. ## 05 -- Checklist de entrega 1. ApplicationDisplayVersion atualizado no .csproj 2. ApplicationVersion incrementado em +1 3. Pasta bin/ e obj/ limpas antes do build 4. Comando executado sem erros de compilacao 5. Nome do APK tem a versao correta 6. APK subido no Google Drive com link de compartilhamento copiado 7. Script SQL executado com BEGIN TRAN / SELECT / COMMIT 8. CodigoVersaoApp no banco bate com ApplicationDisplayVersion no .csproj