我正在关注多项目构建的文档 https://docs.gradle.org/current/userguide/multi_project_builds.html
我有一个外部依赖项,我将其合并到我的主build.gradle中 但是,收到错误
Error:Plugin with id 'com.android.library' not found.
我的主build.gradle的一部分
project(':myexternallibrary') {
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:$versions.androidPluginVersion"
// classpath "me.tatarka:gradle-retrolambda:3.6.0"
}
}
android {
}
model {
components {
main() {
sources {
java {
source {
srcDirs "src/main"
}
// configure the "java" source set
}
}
}
}
}
**apply plugin: 'com.android.library'**
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
// androidTestCompile 'junit:junit:4.12'
compile 'com.google.code.gson:gson:2.8.0'
}
}
我做错了什么? (我不能在myexternallibrary的build.gradle中应用com.android.library(因为我在非android构建中也使用了这个库)
答案 0 :(得分:0)
回答我自己的问题。有几个技巧可以使上述工作(再次目标是在Android和非Android构建中使用相同的Java库与AndroidStudio和IntelliJ社区版)。
在主应用程序的build.gradle中 我不得不替换
apply plugin: 'com.android.library'
与
apply plugin: com.android.build.gradle.LibraryPlugin
我没有解释,为什么我必须用它的类名替换插件名。 这可能是一个错误,我在2013年的某个地方找到了一个引用不同但类似问题的帖子。所以似乎gradle在过去的4年里没有修复它。
以下是更新后的部分的外观 ...
project(':myexternallibrary') {
apply plugin: com.android.build.gradle.LibraryPlugin
android {
compileSdkVersion 25
buildToolsVersion '25.0.2'
}
//'com.android.tools.build
//apply plugin: 'com.android.library'
//apparently within a project we must specify a class name of the plugin
//without quotes...
apply plugin: com.android.build.gradle.LibraryPlugin
model {
components {
main() {
sources {
java {
source {
srcDirs "src/main"
}
}
}
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile 'junit:junit:4.12'
compile 'com.google.code.gson:gson:2.8.0'
}
}
我学到的另一件事是,我必须将myexternallibrary的build.gradle保持为“哑”。例如,我有一个指令将临时构建文件存放到不同的目录中(因为在窗口上超出了路径长度)
allprojects {
repositories {
jcenter()
}
buildDir = "${System.getenv('HOME')}/tmp/${rootProject.name}/${project.name}"
}
但是那个指令(buildDir),即使之前工作正常,在这个新的构建结构中 - 导致gradle混淆目录..而且我得到了'找不到AndroidManifest.xml'......