我有一个带有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'
答案 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上执行相同的操作。)
缺点是每次都会建立共享。就我们而言,还算不错,不是很大。