Ir para o conteúdo

Compilando a partir do código-fonte

Requisitos

  • Windows 10 1809+ com o .NET 8 SDK.
  • Flutter (canal stable) para o app; Android SDK e JDK 17 para o APK.

Backend

# run (tray app + server at http://localhost:4787)
cd DroidDeck
dotnet run

# build the solution
dotnet build DroidDeck.sln -c Debug

Atenção

Não use dotnet build -o <dir> no projeto do backend: isso corrompe o obj/ e gera um assembly sem os recursos, e o app fecha logo depois de iniciar.

Defina ASPNETCORE_ENVIRONMENT=Development para ativar o Swagger em /swagger.

App

cd app

# web configurator -> builds and copies to DroidDeck/wwwroot
..\scripts\deploy-web.ps1

# Android APK
flutter build apk --debug --target-platform android-arm64
adb install -r build\app\outputs\flutter-apk\app-debug.apk

Testes e CI

dotnet test DroidDeck.sln              # backend (tests/DroidDeck.Tests)
cd app; flutter analyze; flutter test  # app

Os testes do backend nunca tocam nos seus dados reais: um module initializer aponta as pastas de dados do servidor para um diretório temporário via DROIDDECK_DATA_DIR. Os testes da categoria RequiresDesktop enviam teclas de verdade (engolidas por um hook de teclado) e precisam de uma sessão interativa do Windows.

O workflow de CI (.github/workflows/ci.yml) roda a cada push na main e em todo pull request: testes do backend (menos RequiresDesktop), flutter analyze --no-fatal-infos, flutter test e o build estrito da documentação. O workflow de Release roda os testes de novo antes de compilar.

Releases

As releases são feitas pelo workflow Release (.github/workflows/release.yml), disparado manualmente em Actions → Release → Run workflow. Ele usa o semantic-release, então a versão vem dos commits (Conventional Commits):

Commit Incremento de versão
feat: minor
fix:, perf: patch
feat!: ou BREAKING CHANGE major

Ele atualiza o CHANGELOG.md, cria a tag e a GitHub Release, e anexa o DroidDeck-Setup.exe (instalador), o DroidDeck-win-x64.zip (o mesmo backend autocontido com o configurador web embutido, sem instalador) e o DroidDeck.apk. Um primeiro job roda o semantic-release em dry-run para saber a próxima versão, porque o instalador é empacotado com ela (Velopack, --packId DroidDeckPC). O feed do Velopack (releases.win.json, o .nupkg e afins) também vai anexado: as cópias instaladas procuram por ele na última release para se atualizar, então não apague esses arquivos. Se não houver nenhum commit que gere release desde a última versão, nada é publicado.

Este site

A landing page (website/landing/) e esta documentação (website/docs/, MkDocs Material, em inglês e português) são publicadas no GitHub Pages pelo .github/workflows/pages.yml a cada push na main que mexa em website/.

pip install -r website/requirements.txt
cd website
mkdocs serve        # http://127.0.0.1:8000/DroidDeck/docs/

As páginas ficam em website/docs/en/ e website/docs/pt/, com os mesmos nomes de arquivo. Ao adicionar uma página, inclua-a no nav do website/mkdocs.yml e crie-a nos dois idiomas.