tools - update gradle android studio
Error de Gradle: no se pudo encontrar ninguna coincidencia para com.android.tools.build:gradle:2.2.+ (7)
El día en que se hizo esta pregunta, 2018-12-10, hubo un problema que duró más de un día porque JCenter recibió una solicitud de Google para eliminar varios archivos binarios de su repositorio:
Google nos pidió que dejáramos de proporcionar sus binarios. Por favor, use el repositorio oficial de Google para ellos. https://twitter.com/bintray/status/1072275597315923971
Si necesita una solución inmediata, lo mejor sería agregar las dependencias que necesite directamente con su URL de Maven. Ej .: repositories { (...) maven { url ''https://dl.bintray.com/android/android-tools'' } }
https://issuetracker.google.com/issues/120759347#comment3
El hilo de arriba es un buen lugar para seguir la resolución del problema, ya que aún está en curso mientras escribo esto.
Esta pregunta ya tiene una respuesta aquí:
Este es un proyecto React Native. Funcionó bien en otra máquina pero una vez que se movió a mi máquina falla.
La mayoría de las soluciones que encontré, sugerían agregar jcenter () a los repositorios de nivel de proyecto gradle.build. En mi caso, ya fue agregado.
La sincronización de Gradle falla con este error:
Could not find any matches for com.android.tools.build:gradle:2.2.+ as no versions of com.android.tools.build:gradle are available. Searched in the following locations: https://jcenter.bintray.com/com/android/tools/build/gradle/maven-metadata.xml https://jcenter.bintray.com/com/android/tools/build/gradle/ Required by: project :react-native-image-picker
Archivo build.gradle de Android:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenLocal()
mavenCentral()
jcenter()
dependencies {
classpath ''com.android.tools.build:gradle:3.0.1'' }
}
allprojects {
repositories {
google()
mavenCentral()
mavenLocal()
jcenter()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
maven { url ''https://jitpack.io'' }
}
}
ext {
buildToolsVersion = "27.0.3"
minSdkVersion = 19
compileSdkVersion = 26
targetSdkVersion = 26
supportLibVersion = "26.1.0"
googlePlayServicesVersion = "11.8.0"
androidMapsUtilsVersion = "0.5+"
}
subprojects { subproject ->
afterEvaluate {
if ((subproject.plugins.hasPlugin(''android'') || subproject.plugins.hasPlugin(''android-library''))) {
android {
variantFilter { variant ->
def names = variant.flavors*.name
if (names.contains("reactNative51") || names.contains("reactNative55")) {
setIgnore(true)
}
}
}
}
}
}
}
Aplicación build.gradle:
apply plugin: "com.android.application"
import com.android.build.OutputFile
/**
* The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
* and bundleReleaseJsAndAssets).
* These basically call `react-native bundle` with the correct arguments during the Android build
* cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
* bundle directly from the development server. Below you can see all the possible configurations
* and their defaults. If you decide to add a configuration block, make sure to add it before the
* `apply from: "../../node_modules/react-native/react.gradle"` line.
*
* project.ext.react = [
* // the name of the generated asset file containing your JS bundle
* bundleAssetName: "index.android.bundle",
*
* // the entry file for bundle generation
* entryFile: "index.android.js",
*
* // whether to bundle JS and assets in debug mode
* bundleInDebug: false,
*
* // whether to bundle JS and assets in release mode
* bundleInRelease: true,
*
* // whether to bundle JS and assets in another build variant (if configured).
* // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
* // The configuration property can be in the following formats
* // ''bundleIn${productFlavor}${buildType}''
* // ''bundleIn${buildType}''
* // bundleInFreeDebug: true,
* // bundleInPaidRelease: true,
* // bundleInBeta: true,
*
* // whether to disable dev mode in custom build variants (by default only disabled in release)
* // for example: to disable dev mode in the staging build type (if configured)
* devDisabledInStaging: true,
* // The configuration property can be in the following formats
* // ''devDisabledIn${productFlavor}${buildType}''
* // ''devDisabledIn${buildType}''
*
* // the root of your project, i.e. where "package.json" lives
* root: "../../",
*
* // where to put the JS bundle asset in debug mode
* jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
*
* // where to put the JS bundle asset in release mode
* jsBundleDirRelease: "$buildDir/intermediates/assets/release",
*
* // where to put drawable resources / React Native assets, e.g. the ones you use via
* // require(''./image.png'')), in debug mode
* resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
*
* // where to put drawable resources / React Native assets, e.g. the ones you use via
* // require(''./image.png'')), in release mode
* resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
*
* // by default the gradle tasks are skipped if none of the JS files or assets change; this means
* // that we don''t look at files in android/ or ios/ to determine whether the tasks are up to
* // date; if you have any other folders that you want to ignore for performance reasons (gradle
* // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
* // for example, you might want to remove it from here.
* inputExcludes: ["android/**", "ios/**"],
*
* // override which node gets called and with what additional arguments
* nodeExecutableAndArgs: ["node"],
*
* // supply additional arguments to the packager
* extraPackagerArgs: []
* ]
*/
project.ext.react = [
entryFile: "index.js"
]
apply from: "../../node_modules/react-native/react.gradle"
/**
* Set this to true to create two separate APKs instead of one:
* - An APK that only works on ARM devices
* - An APK that only works on x86 devices
* The advantage is the size of the APK is reduced by about 4MB.
* Upload all the APKs to the Play Store and people will download
* the correct one based on the CPU architecture of their device.
*/
def enableSeparateBuildPerCPUArchitecture = false
/**
* Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = false
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "com.sos"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
missingDimensionStrategy "RNN.reactNativeVersion", "reactNative57"
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86"
}
}
signingConfigs {
release {
if (project.hasProperty(''MYAPP_RELEASE_STORE_FILE'')) {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
}
buildTypes {
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
signingConfig signingConfigs.release
}
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
variant.outputs.each { output ->
// For each separate APK per architecture, set a unique version code as described here:
// http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
def versionCodes = ["armeabi-v7a":1, "x86":2]
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
output.versionCodeOverride =
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
}
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == ''com.android.support'' && requested.name != ''multidex'') {
details.useVersion "${rootProject.ext.supportLibVersion}"
}
}
}
dependencies {
implementation project('':react-native-fetch-blob'')
implementation project('':react-native-linear-gradient'')
implementation project('':react-native-maps'')
implementation project('':react-native-image-picker'')
implementation project('':react-native-vector-icons'')
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
implementation "com.facebook.react:react-native:+" // From node_modules
implementation project('':react-native-navigation'')
implementation ''com.android.support:design:25.4.0''
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
implementation project('':react-native-maps'')
}
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into ''libs''
}
Por cierto, en el archivo build.gralde de la aplicación, el android
en import com.android.build.OutputFile
produce un error: no se puede resolver
Editar:
Ahora, esa parte del proceso de compilación ya se ha pasado, con éxito, pero comencé a recibir este error: Unable to find a matching configuration of project :react-native-fetch-blob: None of the consumable configurations have attributes.
El paquete react-native-vector-icons también encuentra el mismo problema.
¿Es eso causado por estos dos repositorios rotos?
https://jcenter.bintray.com/com/android/tools/build/gradle/maven-metadata.xml
https://jcenter.bintray.com/com/android/tools/build/gradle/
Ambos respondieron: "No se encontró el camino solicitado".
Editar
Basado en la información de registro:
project :react-native-vector-icons
com.intellij.openapi.externalSystem.model.ExternalSystemException:
Could not find any matches for com.android.tools.build:gradle:2.3.+ as
no versions of com.android.tools.build:gradle are available.
busque ''2.3. +'' y reemplácelo con la versión explícita # (por ejemplo, 2.3.0) El problema se resolverá.
He leído la sugerencia de Android acerca de evitar el uso de + en el código de versión, esa sugerencia podría aplicarse ahora.
Este es un nuevo problema que se abordó en la nueva versión de react-native-image-picker Vaya a su carpeta raíz y reinstale react-native-image-picker:
npm install --save react-native-image-picker
Luego, vaya a su carpeta raíz y asegúrese de que su selector de reactivo nativo de imágenes esté en la versión "^ 0.27.2"
Para las personas que se encuentran con este error con el paquete react-native-vector-icons:
- Actualice "react-native-vector-icons": "^ 6.0.2" en package.json
Fuente: https://github.com/oblador/react-native-vector-icons/issues/605#issuecomment-446081342
Parece que algunos repositorios se eliminaron por error, y según un representante de Google es algo que actualmente están trabajando en la restauración:
https://issuetracker.google.com/issues/120759347#comment30
Hola de nuevo a todos,
Ahora sabemos lo que sucedió, y estamos trabajando para revertirlo de una manera sensata. Aquí hay un resumen básico del problema:
- Hubo algunos artefactos de com.google. * Y com.android. * Falsos / mal formados en jCenter
- La mayoría de estos artefactos se alojaron correctamente en maven.google.com (también conocido como google ())
- Si su sistema de compilación encontró la versión jCenter antes de encontrar la versión de Google Maven, su compilación se rompería
- Google se dio cuenta de esto y le pidió a jFrog que eliminara básicamente todo bajo com.google. * Y com.android. * Porque asumimos que todo estaba en Google Maven también.
- Nos equivocamos :-(
- Algunos artefactos eliminados de jCenter están causando errores en tus construcciones
Estamos trabajando en hacer algunas cosas:
- Algunas bibliotecas que se eliminaron se están enviando a Google Maven. Esto incluye el complemento com.google.gms: google-services, el complemento firebase performance y Exoplayer. Intente agregar google () a sus bloques de repositorios de scripts y aplicaciones para ver si eso ayuda. Esperamos que esto ayude a muchas personas, pero no a todos. * Estamos trabajando para hacer una lista de las bibliotecas que se eliminaron incorrectamente. Algunas de las cosas eliminadas en el paso 4 anterior se hicieron por una buena razón, por lo que no queremos restaurarlas también.
Como dije antes, ¡odiamos que hayamos destruido tus construcciones y apreciamos tu paciencia mientras lo arreglamos!
- Sam
También sugieren las siguientes soluciones alternativas mientras tanto:
https://issuetracker.google.com/issues/120759347#comment36
ESTADO
- La biblioteca de la biblioteca de servicios de Google (com.google.gms: google-services) se ha restaurado, consulte la actualización # 31.
- Se han enviado solicitudes a jCenter para volver a publicar todos los repositorios alojados en bintray.com/google. Los administradores de jCenter en JFrog están trabajando para que vuelvan a estar en línea para nosotros, en este punto, todo lo que podemos hacer es esperar. Esperamos que se conecten pronto. Algunas bibliotecas ya están de vuelta.
- Algunas bibliotecas de Android / Firebase que fueron de doble uso tanto en jcenter.bintray.com como en maven.google.com faltan versiones anteriores (anteriormente alojadas en jCenter). Seguimos trabajando para volver a ponerlos en línea en jcenter.bintray.com o maven.google.com, según corresponda. Estamos trabajando con cuidado aquí para evitar volver a crear los conflictos iniciales que causaron problemas. El trabajo está en curso. Las versiones más recientes de estas bibliotecas no se ven afectadas, ya que están disponibles en maven.google.com.
Soluciones de trabajo
- Para la biblioteca de servicios de Google, no es necesaria ninguna solución. Esta biblioteca ya está restaurada. Otras bibliotecas en / google están en proceso de ser restauradas también.
- Para proyectos servidos desde bintray.com/android o bintray.com/firebase que no se están resolviendo, considere actualizar a una versión más nueva que ya esté alojada en maven.google.com. (Vea a continuación si esto no es factible.)
Para proyectos de bintray.com/google, o si no puede actualizar a una versión más nueva de una biblioteca de Android o Firebase ... deberá agregar temporalmente un bloque similar al siguiente a su build.gradle:
repositorios {maven {url " https://google.bintray.com/ $ (REPOSITORY)"}}
Reemplace $ (REPOSITORY) con el nombre del proyecto de https://bintray.com/google .
Para bintray.com/firebase, use " https://firebase.bintray.com/ $ (REPOSITORY)". Para bintray.com/android, use " https://dl.bintray.com/android/ $ (REPOSITORY)".
Nuevamente, esta solución es solo temporal hasta que podamos volver a incluir todas las versiones en jCenter o reflejadas en maven.google.com.
INVESTIGACIÓN
La solicitud presentada para eliminar la lista de proyectos de jCenter parece haber sido demasiado amplia y fue enviada por otro equipo de Google que no tenía plena autoridad para realizar ese cambio. Los administradores del repositorio en Google no fueron consultados antes de que jCenter ejecutara esta solicitud. Estaremos investigando esto más en los próximos días, ahora mismo nuestra primera prioridad es restaurar el acceso a todas las versiones de las bibliotecas afectadas.
Además, parece que puede haber una mala configuración en el repositorio de Google que impide la duplicación de maven.google.com en jCenter, que a su vez fue la causa de la solicitud de eliminación inicial. La corrección de esta mala configuración puede haber evitado la necesidad de eliminar cualquier cosa. El seguimiento adicional está ocurriendo internamente.
Si no desea esperar hasta que esta biblioteca publique una versión fija, aquí le explicamos cómo puede solucionarlo:
Solo agréguelo a su build.gradle en la sección de subproyectos en la raíz (no app / gradle)
subprojects {
if (project.name.contains(''react-native-image-picker'') ||
project.name.contains(''react-native-vector-icons'')) {
buildscript {
repositories {
jcenter()
maven { url "https://dl.bintray.com/android/android-tools/" }
}
}
}
}
el crédito va a https://github.com/akolpakov
Trate de usar la versión exacta de gradle funcionó para mí
classpath ''com.android.tools.build:gradle:2.2.3''