capacitor-android: inietta versionName/versionCode da package.json #5
Notifications
Total Time Spent: 1 hour 30 minutes
LucaZanni
1 hour 30 minutes
No due date set.
Dependencies
No dependencies set.
Reference: devops/shared-actions#5
Reference in New Issue
Block a user
Problema
capacitor-android.ymllegge la versione dapackage.json(stepapp-info) ma la usa solo per nominare l'artefatto. Ilbuild.gradlenon viene mai toccato, con due conseguenze:android/è gitignorato (es.capacitor-vue-board,capacitor-vue-crm) la piattaforma è rigenerata danpx cap add androida ogni run, quindi la build usa i default Capacitor:versionName "1.0",versionCode 1. L'APK si chiamaapp-1.0.1-release.apkma dentro dichiara 1.0.versionCoderesta 1 su tutta la flotta. Google Play rifiuta ogni upload conversionCodenon strettamente crescente:release.ymlproduce un AAB per lo Store, quindi dalla seconda release in poi la pubblicazione fallisce.Anche sui repo dove
android/è versionato il valore è duplicato a mano e può ri-divergere dapackage.json.Soluzione
Nuovo step
Inject Android versiondopoSync Capacitor, che riscriveversionNameeversionCodeinandroid/app/build.gradleprima della build.versionName= versione dipackage.json, senza trasformazioniversionCode=major*10000 + minor*100 + patch, derivato dalla stessa versione (pre-release e build metadata scartati dal calcolo, ma mantenuti nelversionName)version-codeper forzare un valore esplicito quando la formula non bastabuild.gradle) sia Kotlin DSL (build.gradle.kts)minor/patchsuperano 99, o l'iniezione non produce il valore attesoMonotonia verificata:
0.1.1→101,0.2.0→200,1.0.0→10000,1.0.1→10001,1.2.3→10203,2.0.0→20000.La modifica è applicata a entrambe le varianti (
capacitor-android.ymlecapacitor-android-github.yml), mantenute identiche nel corpo dello step.