web-dev-qa-db-fra.com

Erreur de classement: aucune correspondance n'a été trouvée pour com.Android.tools.build:gradle:2.2.+

Ceci est un projet React Native. A bien fonctionné sur une autre machine, mais une fois déplacée sur la machine, elle échoue.

La plupart des solutions que j'ai trouvées suggéraient d'ajouter jcenter () aux répertoires historiques de niveau de projet gradle.build. Dans mon cas, c'était déjà ajouté.

La synchronisation Gradle échoue avec cette erreur:

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

Fichier build.gradle 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)
                    }
                }
            }
        }
    }
}
}

App 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'
}

Au fait, dans le fichier app.build.gralde, la variable Android dans import com.Android.build.OutputFile renvoie une erreur: impossible à résoudre

Modifier:

Maintenant, cette partie du processus de construction est déjà passée, avec succès, mais j'ai commencé à avoir cette erreur: Unable to find a matching configuration of project :react-native-fetch-blob: None of the consumable configurations have attributes.

 enter image description here

26
Abdulrahman Hassoun

Si vous ne voulez pas attendre que cette bibliothèque publie la version corrigée, voici comment résoudre ce problème:

Il suffit de l'ajouter à votre build.gradle dans la section sous-projets de la racine (pas 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/"  }
            }
        }
    }
}

le crédit va à https://github.com/akolpakov

26
Mukundhan

Il s'agit d'un nouveau problème qui a été résolu dans la nouvelle version de react-native-image-picker Accédez au dossier racine et réinstallez Réactif-native-image-picker:

npm install --save react-native-image-picker

Ensuite, allez dans votre dossier racine et assurez-vous que votre sélecteur d’image-réactif-natif est bien sur la version "^ 0.27.2"

10
David Anderson

Le paquet reag-native-vector-icons rencontre également le même problème. 

Est-ce causé par ces deux référentiels cassés? 

https://jcenter.bintray.com/com/Android/tools/build/gradle/maven-metadata.xml
https://jcenter.bintray.com/com/Android/tools/build/gradle/

Ils répondent tous les deux "Le chemin demandé n'a pas été trouvé."

Modifier

Basé sur les informations du journal:

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.

cherchez le '2.3. +' et remplacez-le par la version explicite # (par exemple 2.3.0) Le problème sera résolu.

J'ai lu la suggestion d'Android pour éviter l'utilisation de + dans le code de version, cette suggestion pourrait être appliquée maintenant.

4
吳強福

Il semblerait que certaines mises en pension aient été supprimées par erreur et, selon un représentant de Google, elles travaillent actuellement sur la restauration de celles-ci:

https://issuetracker.google.com/issues/120759347#comment30

Bonjour à tous,

Nous savons maintenant ce qui s’est passé et nous travaillons à le restaurer dans un fichier manière raisonnable. Voici un aperçu de base du problème:

  1. Il y avait des artefacts com.google. * Et com.Android. * Faux ou mal formés sur jCenter.
  2. La plupart de ces artefacts ont été correctement hébergés sur maven.google.com (alias google ()).
  3. Si votre système de génération a trouvé la version de jCenter avant la version de Google Maven, votre construction se briserait.
  4. Google l'a remarqué et a demandé à JFrog de supprimer pratiquement tout ce qui se trouvait sous com.google. * Et com.Android. * Car nous l'avions supposé était tout sur Google Maven aussi
  5. Nous avions tort :-(
  6. Certains artefacts supprimés de jCenter provoquent des erreurs dans vos versions

Nous travaillons sur quelques choses:

  • Certaines bibliothèques supprimées sont transmises à Google Maven . Cela inclut le plugin com.google.gms: google-services, la base de feu performance plugin, et Exoplayer. Essayez d’ajouter google () à votre buildscript et les référentiels d'applications bloquent pour voir si cela aide. Nous Attendez-vous à ce que cela aide beaucoup de gens, mais pas tout le monde. * Nous travaillons faire une liste des bibliothèques qui ont été supprimées de manière incorrecte. Une partie de les choses supprimées à l'étape 4 ci-dessus ont été faites pour une bonne raison, alors nous Je ne veux pas les restaurer aussi.

Comme je l'ai dit précédemment, nous détestons avoir brisé vos constructions et nous apprécions votre patience pendant que nous la réparons!

  • Sam

Ils suggèrent également les solutions de contournement suivantes dans l'intervalle: 

https://issuetracker.google.com/issues/120759347#comment36

STATUT

  • La bibliothèque de services Google (com.google.gms: google-services) a été restaurée, voir la mise à jour n ° 31.
  • Des demandes ont été soumises à jCenter pour republier tous les référentiels hébergés sur bintray.com/google. Les administrateurs jCenter de JFrog travaillent pour les remettre en ligne pour nous, à ce stade, tout ce que nous pouvons faire c'est attendre. Nous espérons qu’ils seront bientôt en ligne. Certaines bibliothèques sont déjà de retour.
  • Les anciennes versions de certaines bibliothèques Android/Firebase à double hébergement sur jcenter.bintray.com et maven.google.com sont manquantes (précédemment hébergé sur jCenter). Nous travaillons toujours à les obtenir de retour en ligne dans jcenter.bintray.com ou maven.google.com, en tant que approprié - nous travaillons avec soin ici pour éviter de recréer le conflits initiaux qui ont causé des problèmes. Le travail est en cours. Plus récent les versions de ces bibliothèques ne sont pas affectées, car elles sont disponibles sur maven.google.com.

Contournement

  1. Pour la bibliothèque de services Google, aucune solution de contournement n'est nécessaire. Cette bibliothèque est déjà restaurée. D'autres bibliothèques dans/google se trouvent dans le fichier les progrès de la restauration aussi.
  2. Pour les projets non résolus de bintray.com/Android ou bintray.com/firebase, envisagez de passer à version plus récente déjà hébergée sur maven.google.com. (Voir ci-dessous Si cela n'est pas réalisable.)
  3. Pour les projets de bintray.com/google, ou si vous ne parvenez pas à effectuer une mise à niveau vers une version plus récente d'une bibliothèque Android ou Firebase ... devez ajouter temporairement un bloc semblable au suivant à votre fichier build.gradle:

    référentiels { maven { url " https://google.bintray.com/ $ (REPOSITORY)" }}

    Remplacez $ (REPOSITORY) par le nom du projet provenant de https://bintray.com/google .

    Pour bintray.com/firebase, utilisez " https://firebase.bintray.com/ $ (REPOSITORY)". Pour bintray.com/Android, utilisez " https://dl.bintray.com/Android/ $ (REPOSITORY)".

    Encore une fois, cette solution de contournement n’est que temporaire jusqu’à ce que nous puissions tous obtenir versions ré-répertoriées dans jCenter ou mises en miroir dans maven.google.com.

ENQUÊTE

La demande présentée pour retirer des projets de jCenter semble avoir été trop large et a été soumise par une autre équipe de Google qui n’avait pas le plein pouvoir de le faire changement. Les administrateurs du référentiel de Google n’avaient pas été consultés auparavant La requête a été exécutée par jCenter. Nous examinerons cela plus en détail Pour les jours à venir, notre priorité numéro un est de restaurer l'accès à toutes les versions des bibliothèques affectées.

En outre, il semble qu'il puisse y avoir une mauvaise configuration dans Le référentiel de Google qui empêche la mise en miroir de maven.google.com jCenter, qui à son tour a été la cause du retrait initial demande. Corriger cette erreur de configuration aurait peut-être évité le besoin de enlever n'importe quoi. Un suivi supplémentaire est effectué en interne.

4
Eric

Le jour où cette question a été posée - 2018-12-10 - un problème qui a duré plus d'un jour a été envoyé car JCenter a reçu une demande de Google visant à supprimer plusieurs fichiers binaires de leur référentiel:

Google nous a demandé de cesser de fournir leurs fichiers binaires. Veuillez utiliser le référentiel Google officiel pour eux . https://Twitter.com/bintray/status/1072275597315923971

Si vous avez besoin d'une solution immédiate, la meilleure solution consiste à ajouter les dépendances dont vous avez besoin directement avec leur URL Maven. Exemple: repositories { (...) maven { url 'https://dl.bintray.com/Android/android-tools' } } https://issuetracker.google.com/issues/120759347#comment3

Le fil ci-dessus est un bon endroit pour suivre la résolution du problème car il est toujours en cours au moment où j'écris ceci.

4
Danilo Moret

Essayez d'utiliser la version exacte de Gradle cela a fonctionné pour moi

classpath 'com.Android.tools.build:gradle:2.2.3'

2
warl0ck

Pour les personnes rencontrant cette erreur avec le paquet react-native-vector-icons:

  1. Mettez à niveau "react-native-vector-icons": "^ 6.0.2" dans package.json

Source: https://github.com/oblador/react-native-vector-icons/issues/605#issuecomment-446081342

1
mezod