Gradle:未从嵌套项目

时间:2016-10-13 11:49:49

标签: android gradle android-gradle

我有一个带有gradle的多项目构建设置,它将包含多个Android应用程序和库。

项目结构示例:

root (Project Root)
| android
  | module1 (Android Application)
  | module2 (Android Library)
| ios (in the future)

我想将某些gradle插件仅应用于某些子项目。 (比如android gradle插件只到android子项目) 因此,我将:android -> build.gradle中的类路径依赖项和插件声明添加到两个android子项目中:
:android:module1 -> build.gradle -> apply plugin: 'com.android.application'
:android:module2 -> build.gradle -> apply plugin: 'com.android.library' 问题是gradle无法找到android gradle插件:

  

错误:(1,1)评估项目':Shoppr:presentation'时出现问题。   带有id' com.android.application'的插件没找到。

此外,它不像其他一些问题(Gradle Version 3.1; Android Gradle Plugin Version:2.2.1)中的版本问题,因为在:root -> build.gradle:android:moduleX -> build.gradle中定义类路径依赖项时,所有问题都正常如预期的那样。

:root - >的build.gradle

allprojects {
  repositories {
    mavenCentral()
    jcenter()
  }
}

:android - >的build.gradle

buildscript {
  repositories {
    jcenter()
  }

  dependencies {
    classpath 'com.android.tools.build:gradle:2.2.1'    <-- Should only be applied for android project
  }
}

:android:module1 - &gt;的build.gradle

apply plugin: 'com.android.application' --> Plugin with id 'com.android.application' not found.

:android:module2 - &gt;的build.gradle

apply plugin: 'com.android.library'

2 个答案:

答案 0 :(得分:0)

我见过这样的文件夹安排,特别是google示例项目包括和android文件夹以及一个web文件夹。你可以尝试使用android文件夹作为项目文件夹导入项目,因为你可能没有使用gradle来构建Ios和web,如果你有另外两个文件夹项目。

关闭项目并使用android文件夹作为项目根重新导入它,我相信这样,gradle应该运行正常。我的项目文件夹也是这样的,因为我在一个repo中有web和android项目,但在使用android studio构建时,我使用android文件夹作为android的项目根目录。

答案 1 :(得分:0)

我有一个类似的问题。我从拥有3个子任务的android文件夹转变为将3个带有子任务的文件夹划分为:

| android  

    | shared
        -- generates aar
    | device1
        -- generates 2 apks
    | device2
        -- generates 1 apk
    | gradle
    gradlew.bat
    gradlew

device1和device2都希望使用共享。因此,我从android文件夹中删除了settings.gradle和build.grade。 device1,device2和shared具有自己的build.grade和settings.gradle。我分别构建device1和device2。为了让它们包括共享和构建,我将符号链接放置到共享,gradlew,gradlew.bat,并将gradle文件夹从android文件夹放入device1和device2中。瞧,它起作用了! (我在Ubuntu计算机上,但应该能够在Windows和Mac上执行相同的操作。)

缺点是每次都会建立共享。就我们而言,还算不错,不是很大。

[标签:多级项目]