Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gradle error: Could not find any matches for com.android.tools.build:gradle:2.2.+ [duplicate]

This is a React Native project. Worked fine on another machine but once moved to my machine it fails.

Most solutions I found, suggested adding jcenter() to the reposistories of project level gradle.build. In my case, it was already added.

Gradle sync fails with this 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

Android build.gradle file:

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

By the way, in app build.gralde file, the android in import com.android.build.OutputFile throws an error: can't be resolved

Edit:

Now that part of the build process is already passed, succesfully, but I started to get this error: Unable to find a matching configuration of project :react-native-fetch-blob: None of the consumable configurations have attributes.

enter image description here

like image 610
Abdulrahman Hassoun Avatar asked Dec 10 '18 19:12

Abdulrahman Hassoun


People also ask

What is dependencyResolutionManagement?

The dependencyResolutionManagement repositories block accepts the same notations as in a project, which includes Maven or Ivy repositories, with or without credentials, etc. By default, repositories declared by a project will override whatever is declared in settings.

How to define Gradle dependencies?

The following code snippet is to define the external dependency. Use this code in build. gradle file. dependencies { compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final' } An external dependency is declaring the external dependencies and the shortcut form looks like "group: name: version".

How Gradle download dependencies?

At runtime, Gradle will locate the declared dependencies if needed for operating a specific task. The dependencies might need to be downloaded from a remote repository, retrieved from a local directory or requires another project to be built in a multi-project setting. This process is called dependency resolution.

What is module in Gradle?

gradle files are located. The build. gradle (Project: MyApplication) file is in the root folder of the project and its configuration settings apply to every module in the project. A module is an isolated piece of the bigger project.


2 Answers

If you don't want to wait until this library will release fixed version, here is how you can fix it:

Just add it to your build.gradle under subprojects section in the root (not 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/"  }             }         }     } } 

credit goes to https://github.com/akolpakov

like image 133
Mukundhan Avatar answered Oct 02 '22 16:10

Mukundhan


This is a new issue which was addressed in the new version of react-native-image-picker Go to your root folder and reinstall react-native-image-picker:

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

Then go to your root folder and ensure that your react-native-image-picker is on version "^0.27.2"

like image 37
David Anderson Avatar answered Oct 02 '22 17:10

David Anderson