Firebase:无法解析Android应用程序模块的Gradle配置

时间:2017-07-24 11:30:02

标签: android firebase gradle

我一直试图在我的android项目中设置firebase。 问题是,我收到了这个错误:无法解析Android应用程序模块的Gradle配置...我真的无法解决它。

我发现很多人都会收到此错误,但似乎可以通过升级其构建工具版本或更新google-services来解决此问题。我已经完成了所有这些,并且迄今为止还没有能够让它发挥作用。

以下是我的gradle脚本:

apply plugin: 'com.android.application'

android {
signingConfigs {
    AndroidAppPro {
    }
}
compileSdkVersion 25
buildToolsVersion '26.0.0'
useLibrary 'org.apache.http.legacy'
defaultConfig {
    applicationId "com.critizr.pro"
    minSdkVersion 14
    targetSdkVersion 25
    versionCode 9
    versionName "1.5.1"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
productFlavors {
    preprod {
        applicationId "com.cr.pro"
        buildConfigField 'boolean', 'IS_PROD', 'false'
        buildConfigField 'String', 'HOST', '"https://myurl.com/"'
    }
    prod {
        applicationId "com.cr.pro"
        buildConfigField 'boolean', 'IS_PROD', 'true'
        buildConfigField 'String', 'HOST', '"https://myurl/"'
    }
}
packagingOptions {
     exclude 'META-INF/DEPENDENCIES.txt'
     exclude 'META-INF/LICENSE.txt'
     exclude 'META-INF/NOTICE.txt'
     exclude 'META-INF/NOTICE'
     exclude 'META-INF/LICENSE'
     exclude 'META-INF/DEPENDENCIES'
     exclude 'META-INF/notice.txt'
     exclude 'META-INF/license.txt'
     exclude 'META-INF/dependencies.txt'
     exclude 'META-INF/LGPL2.1'
   }

}

dependencies {
compile project(':lib-viewflow')

// new libs
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.android.support:appcompat-v7:25.2.0'
compile 'com.android.support:support-v4:25.2.0'
compile 'com.android.support:cardview-v7:25.2.0'
compile 'com.android.support:recyclerview-v7:25.2.0'

compile 'com.google.android.gms:play-services-gcm:11.0.2'
compile 'com.google.android.gms:play-services-maps:11.0.2'
//compile 'com.google.android.gms:play-services-analytics:11.0.1'

compile 'org.apache.httpcomponents:httpclient:4.1'
compile 'org.apache.httpcomponents:httpmime:4.1'

compile 'com.joshdholtz.sentry:sentry-android:1.5.0'
compile 'com.borax12.materialdaterangepicker:library:1.6'
compile 'com.github.PhilJay:MPAndroidChart:v2.2.5'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.cloudinary:cloudinary-core:1.2.2'
compile 'com.cloudinary:cloudinary-android:1.2.2'
compile 'com.loopj.android:android-async-http:1.4.5'
}
 apply plugin: 'com.google.gms.google-services'

第二个:

 buildscript {
repositories {
    jcenter()
    maven { url "https://jitpack.io" }
}
 dependencies {
    classpath 'com.android.tools.build:gradle:2.3.1'
    classpath 'com.google.gms:google-services:3.1.0'
}
}

allprojects {
repositories {
    jcenter()
    maven { url "https://jitpack.io" }
}
}

感谢您的帮助!

33 个答案:

答案 0 :(得分:20)

对我来说,通过删除jCenter的警告工作

jCenter()  remove it..

答案 1 :(得分:6)

要在 Android Studio v3.1 上解决此问题(不确定以前的版本),只需像下面这样编辑应用程序的 build.gradle

  • 寻找apply plugin: 'com.google.gms.google-services'删除,然后进行同步。现在,您可以毫无问题地使用Firebase Assistant。

答案 2 :(得分:5)

验证构建标签,并确保其中没有警告。

Firebase Assistant似乎对任何 Gradle信息,警告或错误非常敏感。

对我来说,这只是gradle中的一个简单“信息”,不再需要databinding.enabled:

 DSL element 'android.dataBinding.enabled' is obsolete and has been replaced with 'android.buildFeatures.dataBinding'.

一旦删除Firebase助手,效果很好。

答案 3 :(得分:3)

我认为你的一些依赖是支持它的。只需转到你的build.gradle(模块应用程序)并注释掉它们中的大部分或全部(找出哪一个),再次同步忽略所有错误,如果它成功则尝试再次连接到firebase您可以返回build.gradle并取消注释以修复错误。

希望这有帮助

答案 4 :(得分:3)

评论Consider defining a bean named 'elasticsearchTemplate' in your configuration. 对我有用。因此,请检查gradle文件中的依赖项。

答案 5 :(得分:3)

我的问题是 jcenter 存储库,因为它自 2021 年 3 月 31 日起已弃用,请参阅:https://developer.android.com/studio/build/jcenter-migration

我用 jcenter() 替换了 mavenCentral()。现在它可以工作了。

答案 6 :(得分:3)

导航组件的 safeargs 插件也可能导致这种情况。为了修复它,我暂时从应用级 id 'androidx.navigation.safeargs.kotlin' 文件中删除了 build.gradle,然后将其重新添加。

答案 7 :(得分:2)

将gradle构建工具版本更改为3.0.1

答案 8 :(得分:2)

我遇到viewBinding的问题。按照Google的指示进行操作,一切正常。

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

答案 9 :(得分:1)

我也遇到了这个问题,我发现解决这个问题的最好方法是:手动将您的应用程序连接到 firebase 数据库。

答案 10 :(得分:1)

基本上,您需要在执行此操作之前删除所有 gradle 警告。就我而言,我使用了 buildFeatures { viewBinding true}

代替 buildFeatures { dataBinding true }

答案 11 :(得分:1)

在我的情况下,这是因为我在项目中使用了数据绑定。这是我解决问题的方法:

在您的build.gradle(应用程序级别)中,将dataBinding设置如下:

将此代码放在buildTypes下的build.gradle(项目级别)中:

//Here is the code...
buildFeatures {
    dataBinding = true
}

答案 12 :(得分:1)

长时间尝试许多事情之后。 这解决了我:在构建gradle中将谷歌服务版本更改为4.2.0 classpath'com.google.gms:google-services:4.2.0'

现在我的构建包看起来像这样:

buildscript {
repositories {
    google()
    jcenter()

    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.1'

    }
}
dependencies {
    classpath 'com.google.gms:google-services:4.2.0'
}

allprojects {
    repositories {
        google()
        jcenter()

    }
}

}

答案 13 :(得分:1)

就我而言,大多数依赖项都包含在compile中,而不是implementation中。因此,在我的compile中将implementation转换为build.gradle(Module : app)很好

答案 14 :(得分:1)

由于build.gradle(应用程序级别)中Compile关键字的折旧而发生此错误

      WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'. It will be removed at the end of 2018.

其解决方案是

  1. 只需在build.gradle(应用级别)中将 compile 关键字替换为实施 api

  2. 重建项目

如果重建后未解决,请重新启动Android Studio。

答案 15 :(得分:0)

删除项目中所有以前的Firebase依赖项,然后重试。插件和库。

之前我有这个问题,因为我已经手动设置了Firebase。

希望有帮助。

答案 16 :(得分:0)

结论

真正的罪魁祸首是 building.gradle 的警告。 Firebase 助手非常敏感,它会检查您的 build.gradle 中的任何警告(甚至已弃用),然后开始工作。如果它找到任何,那么你会得到这个错误。

解决方案

只需删除或解决 build.gradle 文件的每个警告。此外,删除已经存在的与您添加的相同内容的插件。

答案 17 :(得分:0)

我刚刚在我的 app/build.gradle

中替换了它
dataBinding {
    enabled = true
}

为此:

buildFeatures {
    dataBinding true
}

现在我可以将我的应用连接到 Firebase

答案 18 :(得分:0)

逐步解决问题。

1.在 Gradle Script/build.gradle(Project:your project name):

添加依赖

dependencies {  
    classpath "com.android.tools.build:gradle:4.2.1"
    classpath 'com.google.gms:google-services:4.3.8'
 
}
    }

jcenter 删除或注释掉:

   allprojects {
        repositories {
            google()
            mavenCentral()
           // jcenter() // Warning: this repository is going to shut down soon
        }
    }

2.在 Gradle Script/gradle.properties 中:

android.useAndroidX=true

3.在 Gradle Script/build.gradle(:app) 中:

plugins {
    id 'com.android.application'
    id 'com.google.gms.google-services'
}

在构建类型之前添加 buildFeatures:

buildFeatures {
        dataBinding = true
    }
 

最后:

 dependencies {
        implementation platform('com.google.firebase:firebase-bom:28.0.1')
        implementation 'com.google.firebase:firebase-analytics'
        implementation 'androidx.appcompat:appcompat:1.2.0'
        implementation 'com.google.android.material:material:1.3.0'
        implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
        implementation 'com.google.firebase:firebase-database:20.0.0'
        testImplementation 'junit:junit:4.+'
        androidTestImplementation 'androidx.test.ext:junit:1.1.2'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    }

4.添加谷歌服务json文件

地点:
D:\AndroidStudioProjects\Whatsup_project\app

有关如何添加 JSON 文件的信息,请参阅 youtube video

答案 19 :(得分:0)

我的解决方案是在项目级别 gradle 中删除 jcenter() 。当在 project 中添加了一些奇怪的依赖项或其他一些插件时,可能会发生这种情况。此处显示 jcenter() - jcenter 很快就会消亡。所以在删除它并重新同步项目后,连接到 firebase 选项工作正常。

答案 20 :(得分:0)

如果在评论此行后项目陷入混乱,对我有用

//apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 

答案 21 :(得分:0)

检查您的项目级别是否没有相同的构建工具版本。如果没有下载并重新启动IDE。再次构建两个gradle,然后运行项目。请记住在使用 Firebase 辅助之前至少运行该项目 1 次。

答案 22 :(得分:0)

尝试在项目结构中将 Android Gradle 插件版本更改为 4.1.3,将 Gradle 版本更改为 6.5。它对我有帮助,也可能对你有帮助。 Android Firebase: Could not parse

答案 23 :(得分:0)

解决我的问题的是: 删除

databinding{enabled = true}

并插入

buildFeatures{dataBinding = true}

答案 24 :(得分:0)

要在您的应用中启用Google Firebase服务,您需要将google services plugin添加到gradle文件(build.gradle)中。所以在gradle文件中 在依赖项下添加:

classpath 'com.google.gms:google-services:4.3.0'  // Google Services plugin

在存储库下,检查您的Google Maven存储库为

google() //Google's Maven repository

有关如何为官方文档设置Firebase check here的详细信息。

答案 25 :(得分:0)

面对这个问题时,我只是从中删除了20.0.1,

implementation 'com.google.firebase:firebase-auth:20.0.1'

注意:我首先实现了firebase-boM,所以在我的情况下就已经发生了。

然后同步并尝试重新连接,然后成功。 我认为它的发生有很多原因。 如果您使用的是Firebase boM。然后不要指定任何其他Firebase依赖版本。成功同步后,应解决该问题。 就您而言,我不清楚原因为何。

答案 26 :(得分:0)

将版本更改为以下版本。

dependencies {
    classpath "com.android.tools.build:gradle:3.6.1"
    classpath 'com.google.gms:google-services:4.3.3'
}

答案 27 :(得分:0)

注释gradle警告,然后同步项目。现在连接到Firebase,成功连接到Firebase后,请取消注释警告。 ;)

答案 28 :(得分:0)

我有一个类似的问题。我必须从您的应用程序gradle中的const calcSingle = time => { // insert a if check somewhere here to check for time and if its negative let _time = Math.abs(time); let hour = Math.floor(_time / 60); let minutes = _time % 60; hour = hour < 10 ? "0" + hour : hour; minutes = minutes < 10 ? "0" + minutes : minutes; return (time < 0 ? '-' : '') + hour + ":" + minutes; }; console.log(calcSingle(200), calcSingle(-200));中删除useProguard

此后,我再也没有收到警告

答案 29 :(得分:0)

如果您不使用数据绑定,请从应用程序级别gradle中删除

 dataBinding {
    enabled = true
}

从您的应用级别gradle中删除这些行

答案 30 :(得分:0)

在我的情况下,我必须将build.gradle(Module:app)文件中的minSdkVersion更改为25,并且可以正常工作。

答案 31 :(得分:0)

这对我有用!

在您的android中转到Gradle.properties

通过在前面添加android.enableR8=true来禁用#

#android.enableR8=true

或者,您可以将R8换成D8,将构建系统更改为使用D8而不是R8。

android.enableD8=true

答案 32 :(得分:0)

在我的情况下,我将build.gradle中的minSdkVersion更新为最后一个28.0.3,并在同步后正常工作