Repository navigation
Desenvolvimento
- JDK 17+ (o JBR do Android Studio serve)
- Android SDK com a plataforma 34
- Android Studio Koala ou mais recente (opcional — o Gradle Wrapper está no repositório)
./gradlew assembleDebug # app/build/outputs/apk/debug/app-debug.apk
./gradlew testDebugUnitTest # parsers ID3, LRC e leitura da resposta do tradutor
./gradlew installDebug # instala no aparelho/emulador conectadoVersões principais: AGP 8.5, Kotlin 1.9.24, Compose BOM 2024.06, Media3 1.4, DataStore 1.1, minSdk 26, targetSdk 34.
Há um workflow do GitHub Actions pronto em ferramentas/ci/android.yml (testes + APK de debug a cada push). Para ativá-lo, siga o ferramentas/ci/LEIAME.md — é preciso autorizar o escopo workflow no gh.
O app/build.gradle.kts lê a assinatura de um keystore.properties na raiz do projeto — ele e o .jks ficam fora do git (.gitignore).
storeFile=songv-release.jks
storePassword=********
keyAlias=songv
keyPassword=********./gradlew assembleRelease # app/build/outputs/apk/release/app-release.apk (R8 + shrink, ~3 MB)
⚠️ Guarde osongv-release.jkse as senhas. Sem eles não é possível publicar atualizações que instalem por cima das versões anteriores.
Sem keystore.properties, o release sai sem assinatura (útil para CI); o debug funciona sempre.
Para testar sem usar músicas próprias — e para as capturas desta wiki — há um gerador de faixas 100% sintéticas (acordes gerados, capas desenhadas, letras e artistas fictícios) no mesmo formato do agente:
pip install mutagen pillow # e ffmpeg no PATH
python ferramentas/biblioteca_demo.py saida/
adb push saida/. "/sdcard/Music/SongV Demo/"
adb shell content call --method scan_volume --uri content://media --arg external_primaryEla inclui letras sincronizadas em português, inglês e coreano (para testar tradução e romanização), trechos instrumentais, uma letra sem sincronia, faixas sem letra, sem capa e sem álbum.
- Nomes em português, como o resto do projeto (
tocarAseguir,CapaRepository…). - Comentários explicam o porquê — especialmente quando corrigem um comportamento da versão anterior.
- Sem dependências novas para o que poucas linhas resolvem (HTTP, cache de imagem, JSON).
- Atualize
versionCode/versionNameemapp/build.gradle.ktse oCHANGELOG.md. ./gradlew assembleReleasegh release create vX.Y.Z app/build/outputs/apk/release/app-release.apk#SongV-X.Y.Z.apk --notes-file ...
SongV · feito por Victor K · repositório · licença MIT