本机反应:找不到 com.android.tools.build:gradle:2.2.3

React Native : Could not find com.android.tools.build:gradle:2.2.3

我正在使用 React Native 制作一个 android 应用程序,这是我遇到的错误:


    失败:构建失败,出现异常。

    * 什么地方出了错:
    配置项目“:react-native-fetch-blob”时出现问题。
    > 无法解析配置“:react-native-fetch-blob:classpath”的所有工件。
       > 找不到 com.android.tools.build:gradle:2.2.3。
         在以下位置搜索:
             https://jcenter.bintray.com/com/android/tools/build/gradle/2.2.3/gradle-2.2.3.pom
             https://jcenter.bintray.com/com/android/tools/build/gradle/2.2.3/gradle-2.2.3.jar
         要求:
             项目:react-native-fetch-blob

我也收到以下警告:


    > 配置项目:应用程序
    警告:配置 'compile' 已过时,已替换为 'implementation' 和 'api'。
    它将在 2018 年底删除。有关更多信息,请参阅:http://d.android.com/r/tools/update-dependency-configurations.html
    警告:指定的 Android SDK 构建工具版本 (26.0.2) 将被忽略,因为它低于 Android Gradle 插件 3.2.1 的最低支持版本 (28.0.3)。
    Android 将使用 SDK 构建工具 28.0.3。
    要抑制此警告,请从 build.gradle 文件中删除 "buildToolsVersion '26.0.2'",因为 Android Gradle 插件的每个版本现在都有构建工具的默认版本。
    registerResGeneratingTask 已弃用,请使用 registerGeneratedResFolders(FileCollection)
    registerResGeneratingTask 已弃用,请使用 registerGeneratedResFolders(FileCollection)

    > 配置项目:react-native-android-location-services-dialog-box
    警告:配置 'compile' 已过时,已替换为 'implementation' 和 'api'。
    它将在 2018 年底删除。有关更多信息,请参阅:http://d.android.com/r/tools/update-dependency-configurations.html
    警告:指定的 Android SDK 构建工具版本 (25.0.2) 将被忽略,因为它低于 Android Gradle 插件 3.2.1 的最低支持版本 (28.0.3)。
    Android 将使用 SDK 构建工具 28.0.3。
    要抑制此警告,请从 build.gradle 文件中删除 "buildToolsVersion '25.0.2'",因为 Android Gradle 插件的每个版本现在都有构建工具的默认版本。

这是我的 build.gradle 文件:


    // 顶级构建文件,您可以在其中添加所有 sub-projects/modules 通用的配置选项。

    构建脚本{
        存储库{
            google()
            中心()
            mavenCentral()
        }
        依赖关系{
            类路径 'com.android.tools.build:gradle:3.2.1'

            // 注意:不要将您的应用程序依赖项放在这里;他们属于
            // 在单独的模块 build.gradle 文件中
            类路径 'com.google.gms:google-services:3.0.0'
        }
    }

    所有项目{
        存储库{
            google()
            本地化()
            中心()
            行家{
                // 所有 React Native(JS、Obj-C 源代码、Android 二进制文件)都是从 npm 安装的
                url "$rootDir/../node_modules/react-native/android"
            }

            // jitpack repo 是获取 ucrop 依赖项所必需的
            maven { url "https://jitpack.io" }
        }
    }

这是我的 gradle 包装分发 url :

distributionUrl=https://services.gradle.org/distributions/gradle-4.6-all.zip

我尝试更改不同存储库的顺序,但仍然出现相同的错误。

似乎 com.android.tools.build:gradle:2.2.3 已从 jcenter 存储库中删除。

尝试将这段代码添加到您的顶级 build.gradle 文件中:

subprojects {project ->
    if (project.name.contains('react-native-fetch-blob')) {
        buildscript {
            repositories {
                maven { url "https://dl.bintray.com/android/android-tools/"  }
            }    
        }
    }
}

如 google issuetracker 中的解决方法所示:https://issuetracker.google.com/issues/120759347#comment44

查看您的错误日志:

  • What went wrong: A problem occurred configuring project ':react-native-fetch-blob'. Could not resolve all artifacts for configuration ':react-native-fetch-blob:classpath'. Could not find com.android.tools.build:gradle:2.2.3.

您仍在为您的项目 :react-native-fetch-blob 搜索 AGP 2.2.3

对于那些 React NativeCordovaLib 带有 Android Gradle 插件较低版本的项目,例如2.2.3,你可以尝试用下面的maven样式替换google(),并添加android tools workaround。因此,将 top-level build.gradle 文件修改为 buildscriptsallprojects:

buildscripts {
    repositories {

        // below is the workaround for android tools 
        maven {
            artifactUrls "https://dl.bintray.com/android/android-tools/"
            url "https://jcenter.bintray.com"
        }
        maven {
            url "https://maven.google.com"
        }

        // ... 
        jcenter()

    }
}

allprojects {
    repositories {

        // below is the workaround for android tools 
        maven {
            artifactUrls "https://dl.bintray.com/android/android-tools/"
            url "https://jcenter.bintray.com"
        }
        maven {
            url "https://maven.google.com"
        }

        // ... 
        jcenter()

    }
}

清理您的项目,然后执行新的同步。

  • 尝试“文件”->“使缓存无效/重新启动...
  • 尝试清理项目根目录下的 .gradle.idea 目录。

参见以下参考资料:


对于警告:

WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.

因为你用的是AGP (Aandroid Gradle Plugin 3.2.1 ),构建配置 compile 已更改为 implementationapi。只需将所有 compile 替换为 implementationapi 即可让此警告消失。有关更多详细信息,请参阅:https://developer.android.com/studio/build/dependencies#dependency_configurations

WARNING: The specified Android SDK Build Tools version (25.0.2) is ignored, as it is below the minimum supported version (28.0.3) for Android Gradle Plugin 3.2.1. Android SDK Build Tools 28.0.3 will be used. To suppress this warning, remove "buildToolsVersion '25.0.2'" from your build.gradle file, as each version of the Android Gradle Plugin now has a default version of the build tools.

此警告仅供参考,您可以简单地忽略它或从 build.gradle 文件中删除 buildToolsVersion '25.0.2' 以禁止显示此警告。