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.
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
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"
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.
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:
- Il y avait des artefacts com.google. * Et com.Android. * Faux ou mal formés sur jCenter.
- La plupart de ces artefacts ont été correctement hébergés sur maven.google.com (alias google ()).
- Si votre système de génération a trouvé la version de jCenter avant la version de Google Maven, votre construction se briserait.
- 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
- Nous avions tort :-(
- 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
- 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.
- 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.)
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.
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.
Essayez d'utiliser la version exacte de Gradle cela a fonctionné pour moi
classpath 'com.Android.tools.build:gradle:2.2.3'
Pour les personnes rencontrant cette erreur avec le paquet react-native-vector-icons:
Source: https://github.com/oblador/react-native-vector-icons/issues/605#issuecomment-446081342