安卓Gradle: 多项目构建,顶层build.gradle

5

我有一个多项目的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
      }
   }
}

下一步,我考虑在应用程序1的build.gradle中添加以下内容。
apply plugin: 'com.android.application'

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

I get the following error:

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

在Android的Gradle插件中,是否有一种方法可以拥有一个“主要的Android配置”,并且可以由子模块进行扩展?

你确定问题不是在两个不同的位置设置了apply plugin,并且使用了两个不同的插件ID吗? - Scott Barta
可能是一个愚蠢的问题,可以在gradle文件中不应用android插件的情况下拥有一个“android {...}”部分吗? - pka
不,但是你已经将android应用于了所有子项目。 - Peter Niederwieser
抱歉提出了更多愚蠢的问题,我正在尝试理解Android插件和Gradle的一般工作原理。 我需要应用两个不同的插件,一个是用于库项目的“Andriod library”,另一个是适用于应用程序的“Andriod application”。除此之外,我还需要一个“通用的Android配置”,适用于所有子项目。 - pka
1个回答

2

我有一个类似的问题 - 它与你如何包含插件有关。

在你的“根”构建文件中,你有:

apply plugin: 'android'

在您的应用程序中,您有:

apply plugin: 'com.android.application'

将根目录更改为与应用程序插件匹配。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接