【问题标题】:Android gradle: Multi project build, top level build.gradleAndroid gradle:多项目构建,顶级 build.gradle
【发布时间】:2014-10-21 00:20:49
【问题描述】:

我有一个多项目 Android 构建系统。项目结构如下:

Root Dir
   |
    settings.gradle
   |
    build.gradle
   | 
    Apps
      |
       app 1
         |
         build.gradle
      |
       app 2
         |
         build.gradle
    |
    Libs
      |
       lib 1
         |
         build.gradle
      |
       lib 2
         |
         build.gradle

所有的应用程序和库都有共同的 android 配置。

在根级别 build.gradle 我有以下内容:

subprojects {
   apply plugin: 'android'
   android {
      compileSdkVersion "Google Inc.:Google APIs:19"
      buildToolsVersion "20.0.0"

      defaultConfig {
         minSdkVersion 14
         targetSdkVersion 19
      }
   }
}

接下来我想在 app 1 的 build.gradle 中添加以下内容

apply plugin: 'com.android.application'

android {
   sourceSets {
      main {
         manifest.srcFile 'AndroidManifest.xml'
         java.srcDirs = ['src']
         res.srcDirs = ['res']
      }
   }
}

我收到以下错误:

Cannot add extension with name 'android', as there is an extension already registered with that name.

在android的gradle插件中,有没有办法拥有一个可以通过子模块扩展的“master android configuration”?

【问题讨论】:

  • 您确定问题不在于将apply plugin 设置在两个不同的位置,并使用两个不同的插件 ID?
  • 可能是个愚蠢的问题,如果不在 gradle 文件中应用 android 插件,可以有一个“android { ... }”部分吗?
  • 否,但您已将android 应用于所有子项目。
  • 对不起更多愚蠢的问题,我试图了解 android 插件和 gradle 的一般工作原理。我需要应用两个不同的插件,一个用于库项目android libraryandroid application 用于应用程序。除此之外,我还需要一个common android configuration,它适用于所有子项目。

标签: android gradle android-gradle-plugin


【解决方案1】:

我遇到了类似的问题 - 它与您如何包含插件有关。

在您的“根”构建文件中:

apply plugin: 'android'

在您的应用中,您拥有:

apply plugin: 'com.android.application'

更改根以匹配应用插件。

【讨论】:

    猜你喜欢
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 2012-08-01
    相关资源
    最近更新 更多