android - 具有外部依赖项定义的 Gradle DSL 中的关闭错误

标签 android gradle android-gradle-plugin build.gradle

在我的 gradle 文件中,我已将所有依赖项定义外部化到文件 buildsystem/dependencies.gradle:

ext {
  //Android
  androidBuildToolsVersion = "23.0.2"
  androidMinSdkVersion = 21
  androidTargetSdkVersion = 23
  androidCompileSdkVersion = 23

  //View libraries
  appcompatVersion = '23.1.1'
  designVersion = '23.1.1'
  //... other dependencies

  //Analytics
  crashlyticsAnswersVersion = '1.3.6'
  crashlyticsCrashlyticsVersion = '2.5.5'

  presentationDependencies = [
        appcompat:            "com.android.support:appcompat-v7:${appcompatVersion}",
        design:               "com.android.support:design:${designVersion}",
        //... other
        answer:               "com.crashlytics.sdk.android:answers:${crashlyticsAnswersVersion}@aar",
        crashlytics:          "com.crashlytics.sdk.android:crashlytics:${crashlyticsCrashlyticsVersion}@aar",
  ]
}

然后,在我的 app/build.gradle 文件中,我在依赖 block 中使用了这个定义:

dependencies {
  def presentationDependencies = rootProject.ext.presentationDependencies
  def presentationTestDependencies = rootProject.ext.presentationTestDependencies

  compile presentationDependencies.appcompat
  compile presentationDependencies.design

  compile presentationDependencies.answer {
      transitive = true;
  }
  compile presentationDependencies.crashlytics {
      transitive = true;
  }

  //compile('com.crashlytics.sdk.android:answers:1.3.6@aar') {
  //    transitive = true;
  //}
  //compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
  //    transitive = true;
  //}

  testCompile presentationTestDependencies.junit
}

当以常规方式(注释行)定义 Crashlytics 依赖项时 - 编译通过。 在我的配置中,出现错误:

* What went wrong:
A problem occurred evaluating project ':app'.
> No signature of method: java.util.LinkedHashMap.answer() is applicable for argument types:  
(build_3csgketz6zwk5p72to2csf0e$_run_closure3$_closure8) values:
[build_3csgketz6zwk5p72to2csf0e$_run_closure3$_closure8@54bfd47]
Possible solutions: any(), inspect(), use([Ljava.lang.Object;), any(groovy.lang.Closure), any(groovy.lang.Closure)

我该如何定义它?我知道,问题在于闭包包含 transitive 字段。但我不知道什么是正确的配置方法。

最佳答案

感谢@Gabriele Mariotti。

缺少括号

 compile (presentationDependencies.crashlytics) {
  transitive = true;
 }

关于android - 具有外部依赖项定义的 Gradle DSL 中的关闭错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35802353/

相关文章:

android - OptionMenu 不出现

android - 使用 Phonegap 进行网页抓取

android - OnLoadFinished 无限调用

android - 在 Android Studio 版本 3.2 和 Gradle 版本 4.6 中启用缩小时,Gradle 构建因 fabric crashlytics 而失败

AndroidTest 不使用测试应用

android - App更新时是否删除了内部存储文件?

android - gradle任务将在使用AS同步时运行

groovy - 任务方法的gradle参数顺序

eclipse-plugin - Eclipse Gradle插件:Gradle依赖项有时会更改 'order and export'屏幕中的位置

android - Gradle Test Executor使用非零退出代码完成