Estoy ejecutando ionic cordova build android y fallando.
Después de dos días de investigación, probé varios enfoques y finalmente encontré el problema, pero no puedo encontrar la solución.
Yo uso la plataforma cordova 10.1.0, que genera project.properties como este
target=android-30 android.library.reference.1=CordovaLib android.library.reference.2=app cordova.system.library.1=androidx.annotation:annotation:1.1.0 cordova.system.library.2=androidx.legacy:legacy-support-v4:1.+ cordova.system.library.3=androidx.appcompat:appcompat:1.+eso funciona bien hasta hace dos días, cuando el ionic incorporado en el tablero falló.
Descubrí que androidx.appcompat:appcompat:1.+ siempre usa la última versión androidx.appcompat:appcompat:1.4.0-beta01. y el comando cordova.cmd build android me arroja el siguiente error
A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction > The minCompileSdk (31) specified in a dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties) is greater than this module's compileSdkVersion (android-30). Dependency: androidx.appcompat:appcompat:1.4.0-beta01. AAR metadata file: C:\Users\YOAN\.gradle\caches\transforms-3\cf625c79807b9ffa78b701a3a960597e\transformed\appcompat-1.4.0-beta01\META-INF\com\android\build\gr adle\aar-metadata.properties.Si cambio androidx.appcompat:appcompat:1.+ a androidx.appcompat:appcompat:1.3.1 , funciona, también si elimino toda la línea también funciona, pero compila solo localmente, si implemento en dashboardionicframework ci/cd, obtengo falló nuevamente porque los cambios no se reflejan en la compilación del CD de CI.
Intenté agregar <framework src="androidx.appcompat:appcompat:1.3.0" /> a config.xml, para forzar la carga de la versión específica de appcompat, pero eso no funciona.
también agregué <framework custom="true" src="config-extras.gradle" type="gradleReference" /> a config.xml para poner una configuración extra de gradle como esta:
allprojects { repositories { configurations.all { resolutionStrategy { force 'androidx.appcompat:appcompat:1.3.1' } } } }forzar a usar una versión específica, pero eso no funciona.
Necesito anular el valor específico de project.properties, o al menos forzar el uso de la versión específica que necesito.
Este problema está relacionado con androidx.appcompat:appcompat 1.4.0-beta01 lanzado el 29 de septiembre de 2021.
Como plugin.xml define ANDROIDX_VERSION como versión principal 1 (1.+), se usó 1.4.0-beta01 en lugar de 1.3.0. Desafortunadamente, no puede simplemente usar cordova plugin add cordova.plugins.diagnostic --variable ANDROIDX_VERSION=1.3.+ para sobrescribir el valor, ya que se usaría la misma versión para androidx.legacy:legacy-support-v4 que existe como versión 1.0.0 solamente.
Utilicé con éxito cordova plugin add cordova.plugins.diagnostic --variable ANDROIDX_VERSION="[1.0, 1.4[" para arreglar mis compilaciones.