tutorial support studio run android cordova gradle

support - cordova-android version



Ejecutando "cordova build android": no se puede encontrar el atributo android: fontVariationSettings y android: ttcIndex (26)

¡MANERA SÚPER SIMPLE Y CORRECTA DE RESOLVERLO!

Simplemente actualice el SDK y agregue la última versión 2 de Android ... ¡y reinicie la computadora! Hecho...

Ahora tenemos tiempo para hablar sobre autos y deportes ...

Cuando ejecuto cordova build android --buildConfig xxxx --release , cordova build android --buildConfig xxxx --release el siguiente error:

ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVariationSettings ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:ttcIndex

Lo extraño es que uso dos máquinas macOS para la compilación, y obtengo este error solo en una de ellas para el mismo código.

Aquí está la salida de ./gradlew cdvPrintProps que obtengo en las dos máquinas:

:cdvPrintProps cdvCompileSdkVersion=26 cdvBuildToolsVersion=27.0.3 cdvVersionCode=null cdvMinSdkVersion=21 cdvBuildMultipleApks=true cdvReleaseSigningPropertiesFile=release-signing.properties cdvDebugSigningPropertiesFile=null cdvBuildArch=null computedVersionCode=152045989 computedArmv7VersionCode=1520459892 computedX86VersionCode=1520459894

A continuación se muestra la lista de complementos utilizados:

$ cordova plugins list cordova-custom-config 5.0.2 "cordova-custom-config" cordova-fabric-plugin 1.1.10 "cordova-fabric-plugin" cordova-open-native-settings 1.5.0 "Native settings" cordova-plugin-app-event 1.2.1 "Application Events" cordova-plugin-app-version 0.1.9 "AppVersion" cordova-plugin-camera 2.4.1 "Camera" cordova-plugin-compat 1.2.0 "Compat" cordova-plugin-console 1.1.0 "Console" cordova-plugin-crosswalk-webview 2.4.0 "Crosswalk WebView Engine" cordova-plugin-datepicker 0.9.2 "DatePicker" cordova-plugin-device 2.0.1 "Device" cordova-plugin-email 1.2.7 "EmailComposer" cordova-plugin-file 4.3.3 "File" cordova-plugin-file-transfer 1.6.3 "File Transfer" cordova-plugin-inappbrowser 1.7.2 "InAppBrowser" cordova-plugin-network-information 1.3.4 "Network Information" cordova-plugin-secure-storage 2.6.8 "SecureStorage" cordova-plugin-splashscreen 4.1.0 "Splashscreen" cordova-plugin-statusbar 2.4.1 "StatusBar" cordova-plugin-whitelist 1.3.3 "Whitelist" cordova.plugins.diagnostic 3.9.2 "Diagnostic" de.appplant.cordova.plugin.local-notification 0.8.5 "LocalNotification" ionic-plugin-keyboard 2.2.1 "Keyboard"

¿Como puedo solucionar este problema?


Acabo de solucionar este problema yendo a la carpeta plataforma / Android y project.properties archivo project.properties ) y reemplacé com.android.support:support-v4:+ con com.android.support:support-v4:27.1.0 .


Agregue las siguientes líneas a sus plataformas / android / build.gradle

configurations.all { resolutionStrategy { force ''com.android.support:support-v4:27.1.0'' } }

Si todavía tiene problemas, intente ejecutar este comando:

cordova plugin add cordova-android-support-gradle-release --fetch


Algunas de sus bibliotecas deberían estar usando

com.android.support:support-v4:+

Encuentra cuál es, con

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

Y agregue esa biblioteca como módulo si no está utilizando una versión específica en su última actualización (¡También plantee un problema en esa biblioteca!;))

Gracias a @avmatte!


Aquí hay una manera fácil de solucionarlo que persistirá cuando se reconstruya el directorio de la plataforma y no hay necesidad de revisar todos sus complementos para tratar de encontrar un culpable. Cree un archivo build-extras.gradle con estos contenidos:

configurations.all { resolutionStrategy { force ''com.android.support:support-v4:27.1.0'' } }

Luego cree el archivo after_platform_add/010_copy_build_extras.js con el siguiente contenido:

#!/usr/bin/env node var fs = require(''fs''); var rootdir = process.argv[2]; var android_dir = `${rootdir}/platforms/android`; var gradle_filename = ''build-extras.gradle''; var gradle_file = `${rootdir}/${gradle_filename}`; if (fs.existsSync(android_dir) && fs.existsSync(gradle_file)) { fs.createReadStream(gradle_file) .pipe(fs.createWriteStream(`${android_dir}/${gradle_filename}`)); }

Ahora vuelva a crear la plataforma de Android y usará la biblioteca de soporte anclada.


En su archivo build.gradle agregue

configurations.all { resolutionStrategy { force ''com.android.support:support-v4:27.1.0'' } }

Y en su archivo project.properties cambie cordova.system.library.3 a cordova.system.library.3=com.android.support:support-v13:27.+ .


Encontré la solución en Ionic Forum, que fue la única solución que funcionó para mí:

Correr:

plataforma iónica cordova rm android

Correr:

plataforma iónica cordova agregar [email protected]

Correr:

plugin iónico de cordova agregar cordova-plugin-androidx

Correr:

plugin iónico de cordova agregar cordova-plugin-androidx-adapter

Asegúrese de que su gradle.properties tenga:

cdvMinSdkVersion = 19

Asegúrese de que su build.gradle tenga:

project.ext { defaultBuildToolsVersion="28.0.3" //String defaultMinSdkVersion=19 //Integer - Minimum requirement is Android 4.4 defaultTargetSdkVersion=28 //Integer - We ALWAYS target the latest by default defaultCompileSdkVersion=28 //Integer - We ALWAYS compile with the latest by default }

Asegúrese de que su config.xml tenga:

<preference name="android-minSdkVersion" value="19" />

de: https://forum.ionicframework.com/t/firebase-app-unable-to-compile-on-android-with-aapt-error/166564/7

que también se maneja en la respuesta : https://.com/a/56656680/839691


Es extraño, pero funciona cuando agrego las siguientes líneas con las mismas versiones.

Estas son mis líneas relacionadas en el archivo platforms/android/build.gradle :

dependencies { compile fileTree(dir: ''libs'', include: ''*.jar'') // SUB-PROJECT DEPENDENCIES START debugCompile(project(path: "CordovaLib", configuration: "debug")) releaseCompile(project(path: "CordovaLib", configuration: "release")) compile "com.android.support:support-v4:26.+" compile "com.android.support:appcompat-v7:26.+" // SUB-PROJECT DEPENDENCIES END } // ADDED THESE LINES configurations.all { resolutionStrategy.force ''com.android.support:support-v4:26+'' }

En mi proyecto, el problema se produjo debido al complemento ''cordova-plugin-crosswalk-webview''.


Es una entrada duplicada en values.xml en una carpeta llamada support-compat-28.0.0-alpha1.aar .

Encontrará este archivo en Windows en /users/YOURUSERID/.gradle/caches/transforms-1/files-1.1

Una vez dentro de esa carpeta, debe ir algunos niveles más profundos a values.xml .

En ese archivo, busque un elemento <declare-styleable name="FontFamilyFont> .

En ese elemento, elimine las CUATRO líneas con android: en él.

Después de hacer ese cambio, puedo volver a compilar sin errores.


Estaba enfrentando el mismo error. Hice una investigación completa en el directorio de complementos para com.android.support:support-v4:+ y lo reemplazó con un código de versión estático.

Para mí, com.android.support:support-v4:23.4.0 funcionó bien. No había necesidad de eliminar y volver a agregar la plataforma de Android entonces.


Estaba teniendo el mismo problema de la nada ayer. Comenzó al azar, pero al leerlo, parece que tiene que ver con una actualización como se mencionó anteriormente por @ cpro90. Sin embargo, intenté y no pude encontrar dónde hacer el cambio manual necesario.

Finalmente identifiqué que el problema estaba siendo causado por mi plugin cordova-plugin-crosswalk-webview. En GitHub, encontré el problema en el plugin repro esta mañana, y tenía más de 520 visitas a la hora del almuerzo.

@UNUMObile sugirió lo siguiente en el archivo build.gradle para forzar una versión anterior globalmente:

configurations.all { resolutionStrategy.force ''com.android.support:support-v4:24.0.0'' }

Esto funcionó de inmediato para mí y puede ayudar a otros con otros complementos que también han dependido de ''com.android.support:support-4:<28. La nueva versión 28 parece ser el problema.

Espero que esto ayude a alguien a avanzar.


Google lanzó la nueva versión 28.0.0-alpha1 de com.android.support:support-v4 que agrega 2 nuevos atributos (android: fontVariationSettings y android: ttcIndex). Algunos de los complementos están utilizando las últimas bibliotecas compatibles con Android, lo que resulta en incompatibilidades no deseadas.

Opción 1: Instale el complemento cordova-android-support-gradle-release .

Complemento bien documentado que "alinea varias versiones de las bibliotecas de soporte de Android especificadas por otros complementos a una versión específica". Probado sin ningún comportamiento destructivo.

cordova plugin add cordova-android-support-gradle-release --fetch

Lea la documentación para un conjunto completo de opciones: Readme

Opción 2 : agregue el siguiente fragmento de código en build.gradle en plataformas / android

/** IMPORTANT - Manually added Problem: 8 March 2018 - Google released version support-v4:28.0.0-alpha1 which breaks the project with following error: unable to find attribute android:fontVariationSettings and android:ttcIndex Effect: Force a specific version of the library */ configurations.all { resolutionStrategy.force ''com.android.support:support-v4:27.1.0'' }

Advertencia: el código en build.gradle se sobrescribirá si elimina / agrega la plataforma Android. Si no desea utilizar el complemento por alguna razón o de alguna manera no funciona para usted, cree un gancho y sobrescriba el archivo cada vez. Verifique el segundo comentario here .

Si el problema persiste, puede intentar:

cordova platform rm android cordova platform add android

O

Asegúrese de que no tiene una versión anterior de la aplicación instalada en el dispositivo que prueba porque recibirá un error ambiguo cuando intente degradar la versión existente: "INSTALL_FAILED_VERSION_DOWNGRADE" y "UnhandledPromiseRejectionWarning: rechazo de promesa no controlado"


Me encontraba con este problema con react native y fue causado por las siguientes líneas en mi android/app/build.gradle :

implementation ("com.google.android.gms:play-services-base:+") { force = true; } implementation ("com.google.android.gms:play-services-maps:+") { force = true; }

etc ...

Aparentemente, esto se resolvió con una nueva versión 17.0.0 que rompió mi compilación.
Cambiar el + a 16.0.0 (o 16.0.1 para play-services-base) resolvió mi problema


Me está ocurriendo el mismo error. Aparentemente, se lanzó una nueva versión de la biblioteca com.android.support:support-v4 , y el complemento que estoy usando define com.android.support:support-v4:+ como dependencia en plugin.xml . El signo + significa que obtendrá la última versión (28.0.0), que parece ser incompatible con otros complementos.

Pude construir una versión de desarrollo cambiando todas las dependencias del complemento de com.android.support:support-v4:+ a com.android.support:support-v4:27.1.0 . Además, ionic cordova platform remove android y ionic cordova platform add android . Espero que ayude, al menos para el desarrollo.


Otro enfoque con la misma solución es crear un gancho. Es persistente (después de reinstalar la plataforma), puede confirmarlo y no requiere volver a agregar la plataforma.

% project% / scripts / android / android-support-version.js

#!/usr/bin/env node var fs = require(''fs''); function replace_strings_in_file(filename, replacementsObject) { if (fs.existsSync(filename)) { var data = fs.readFileSync(filename, ''utf8''); Object.keys(replacementsObject).forEach(function (to_replace) { var replace_with = replacementsObject[to_replace]; data = data.replace(to_replace, replace_with); }); console.log(data); fs.writeFileSync(filename, data, ''utf8''); } else { console.log(''file not found''); } } module.exports = function (context) { var rootdir = process.argv[2]; if (rootdir) { replace_strings_in_file("platforms/android/project.properties", {''com.android.support:support-v4:+'': ''com.android.support:support-v4:27.1.0''}); console.log(''com.android.support version fix''); } };

Gancho de inicio en la configuración

% project% / config.xml

... <platform name="android"> <hook src="scripts/android/android-support-version.js" type="before_build" /> ...

Instale la dependencia de fs en su proyecto:

npm i fs --save-dev

Ejecutar compilación:

cordova build android


Para los usuarios de Phonegap Build , como @catu mencionó en un comentario, puede probar Readme cuyo propósito es evitar fallas de compilación causadas al incluir diferentes versiones de las bibliotecas de soporte .


Si está utilizando iónico y obtiene este error, resuélvalo haciendo lo siguiente:

-cordova platform rm android -cordova platform add android

Puede ser una posible solución


Si realmente solo necesita una solución rápida sobre ese problema para ejecutar su compilación, puede intentar agregar las siguientes líneas en su archivo de plataformas / android / build.gradle:

configurations.all { resolutionStrategy { force ''com.android.support:support-v4:27.1.0'' } }

De todos modos, configurar la versión aquí no es una solución sostenible.


Simplemente ponga siguiente en build-extras.gradle

configurations.all { resolutionStrategy { force ''com.android.support:support-v4:27.1.0'' } }


Solo algunos consejos para el desarrollador de Kotlin:

Si sigue estas respuestas aquí, está seguro de que no tiene la biblioteca support-v4 en su proyecto pero aún ve este error, eche un vistazo a la biblioteca ktx .

Me acabo de dar cuenta de que estoy usando la última versión 1.0.0-alpha1 alpha1 para la biblioteca ktx y aparece este error; Después de que volví a la versión 0.3 , todo volvió a la normalidad ahora.


Tengo el mismo error pero no en cordova build. Una nueva versión de com.android.support:appcompat-v7 y dependencias. Pero la versión incompatible está en el tercer paquete que depende de com.android.support:appcompat-v7 .Así que no puedo arreglar el tercer paquete con @avmatte La solución de @avmatte .

Use la solución de @ Sai Teja para encontrar un paquete incompatible:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

Luego lo arregló con:

configurations.all { resolutionStrategy { force ''com.android.support:support-compat:{the_same_version}'' force ''com.android.support:appcompat-v7:{the_same_version}'' force ''com.android.support:support-core-utils:{the_same_version}'' force ''com.android.support:support-core-ui:{the_same_version}'' force ''com.android.support:support-fragment:{the_same_version}'' force ''com.android.support:support-annotations:{the_same_version}'' ... } }

El código anterior fuerza la versión de dependencias.


Tuve el mismo problema después de instalar el plugin cordova-plugin-file-opener2. Se resolvió después de hacer: Opción 1: Instalar el complemento cordova-android-support-gradle-release. complemento cordova agregar cordova-android-support-gradle-release --fetch


Tuve el mismo problema y ninguna de las soluciones dadas funcionó para mí. La instalación de la última versión de Android SDK Build-tools (27.0.3) resolvió mi problema.


actualizaciones a la respuesta de @Brad Pitcher:

hooks/copy_build_extras.js

#!/usr/bin/env node var fs = require(''fs''); module.exports = function (context) { var rootdir = context.opts.projectRoot; var android_dir = `${rootdir}/platforms/android`; var gradle_filename = ''build-extras.gradle''; var gradle_file = `${rootdir}/${gradle_filename}`; if (fs.existsSync(android_dir) && fs.existsSync(gradle_file)) { fs.createReadStream(gradle_file) .pipe(fs.createWriteStream(`${android_dir}/${gradle_filename}`)); } };

config.xml

<platform name="android"> <allow-intent href="market:*" /> <hook src="hooks/copy_build_extras.js" type="before_build" /> </platform>

build-extras.gradle en el directorio raíz

configurations.all { resolutionStrategy { force ''com.android.support:support-v4:27.1.0'' } }



Simplemente solucione este problema colocando las siguientes líneas de código en el archivo plataformas / android / app / build.gradle, justo después del bloque buildscript {}:

configurations.all { resolutionStrategy { force ''com.android.support:support-v4:27.1.0'' } }