android,Android,Gradle,Android Gradle Plugin,android" /> android,Android,Gradle,Android Gradle Plugin,android" />

Android Gradle:未从嵌套项目解析类路径依赖关系

Android Gradle:未从嵌套项目解析类路径依赖关系,android,gradle,android-gradle-plugin,android,Android,Gradle,Android Gradle Plugin,android,我和gradle有一个多项目构建设置,其中将包含多个android应用程序和库 项目结构示例: root (Project Root) | android | module1 (Android Application) | module2 (Android Library) | ios (in the future) 我只想将某些gradle插件应用于某些子项目。(如android gradle插件仅适用于android子项目) 因此,我在:android->build.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”的插件

此外,它也不是一个版本问题,因为在
:root->build.Gradle
:Android:moduleX->build.Gradle
中定义类路径依赖项时,所有这些都按预期工作

:root->build.gradle

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

  dependencies {
    classpath 'com.android.tools.build:gradle:2.2.1'    <-- Should only be applied for android project
  }
}
apply plugin: 'com.android.application' --> Plugin with id 'com.android.application' not found.
apply plugin: 'com.android.library'
:android->build.gradle

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

  dependencies {
    classpath 'com.android.tools.build:gradle:2.2.1'    <-- Should only be applied for android project
  }
}
apply plugin: 'com.android.application' --> Plugin with id 'com.android.application' not found.
apply plugin: 'com.android.library'
:android:module2->build.gradle

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

  dependencies {
    classpath 'com.android.tools.build:gradle:2.2.1'    <-- Should only be applied for android project
  }
}
apply plugin: 'com.android.application' --> Plugin with id 'com.android.application' not found.
apply plugin: 'com.android.library'

我见过这样的文件夹安排,尤其是谷歌的示例项目,包括android文件夹和web文件夹。您可以尝试使用android文件夹作为项目文件夹导入项目,因为如果您还有两个文件夹,您可能不会使用gradle构建Ios和web


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

我遇到了类似的问题。我从有一个包含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。为了让它们包含shared和build,我将android文件夹中的shared、gradlew、gradlew.bat和gradle文件夹的符号链接放入device1和device2。瞧,它起作用了!(我使用的是Ubuntu电脑,但应该可以在Windows和Mac上使用。)

缺点是每次都会构建共享。在我们的情况下,这不是太糟糕,它不是很大


[标记:多层次项目]

非常感谢您的建议。我将我的项目分开,以获得对hte模块依赖关系的细粒度控制。我会将你的答案标记为接受,尽管它不能解决最初的问题。