我有一个基于gradle的Android项目,有4个子模块——两个库和两个应用程序。我试图通过将一些共享代码/配置移动到顶层build.gradle文件并使用子项目{}
来简化每个子模块的build.gradle文件。
文件系统结构如下所示:
Root
|- App1/
|- App2/
|- Lib1/
|- Lib2/
|- build.gradle
|- settings.gradle
问题是,如果我向子项目添加一个android {}
部分,那么gradle任务就会失败。例如,这是我的顶级 build.gradle 文件:
subprojects { project ->
android {
buildToolsVersion "20.0.0"
}
}
运行gradle返回这个:
出错的地方:评估根项目“android”时出现问题。找不到根项目“android”参数[build_7dngpra6ldok366maq0on77r7e$_run_closure3_closure5@43d95624]的方法android()。
我搜索了类似的帖子,有些人建议在每个子项目中添加应用插件:'android'
行,以暴露gradle抱怨的丢失的android()
方法。但是,该解决方案不适合我,因为它会有效地将该行添加到库项目中,这需要应用插件:'android-Library'
代替。
当您在同一个项目中有应用程序和库时,有没有办法在子项目{}
中使用android{}
?
您可以使用后评估
afterEvaluate {
subprojects { project ->
android {
buildToolsVersion "20.0.0"
}
}
}
user4118620的答案有一个小问题...至少在Gradle 2.10上,当我使用它时。为了让密钥对Android模块可见。我们需要将 ext 放在子项目范围下
在根gradle文件中,您需要添加以下内容
subprojects {
ext{
<android_compile_sdk_key> = <sdk_value>
<android_build_key> = <build_value>
}
}
在每一个子模块中,你只要简单地按照他之前提到的去做
android {
compileSdkVersion <android_compile_sdk_key>
buildToolsVersion <android_build_key>
}
您可以在以下链接中找到有关gradle multibuild的文档:
https://docs.gradle.org/current/userguide/multi_project_builds.html#sub:adding_specific_behavior
这实际上是对android-gradle插件结构方式的限制,并且在android工具网站上记录了一个解决方法。
如果你有很多Android模块,你可能想避免在所有的模块中手工设置相同的值。因为你可能有一个混合的android和android库项目,你不能通过一个子项目闭包来应用这些插件。
建议的解决办法是:
...在根项目的build.gradle:
ext {
compileSdkVersion = 19
buildToolsVersion = "19.0.1"
}
在所有android模块中:
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
}
...
我注意到的一个想法是,这在旧版本的gradle上不起作用(我正在尝试使用1.10并得到一个错误)。在Gradle 2.1中,这似乎可以正常工作。
第62行是。 我是不是漏了什么?我从这里取了一些类似的想法,并修正了解决方案。(请参阅“从文件应用”标题。)
Gradle不构建我的android项目。 Gradle版本:1.12 Groovy:1.8.6 Ant:Apache Ant(TM)版本1.9.3编译于2013年12月23日 Ivy:2.2.0 JVM:1.7.0_51(Oracle Corporation 24.51-b03) OS:Mac OS X 10.9.3x86_64 --Stacktrace --调试
我不知道该怎么办;我卡住了。我有以下依赖关系,以前一切都很好: 然后,突然,它开始说: 我不确定是什么改变了,或者是什么导致了这种情况的发生。
分级同步消息为: 错误:(24,0)找不到Gradle DSL方法:“Android()”可能的原因: 我不太确定这个方法到底在哪里。如果它是位于应用程序的文件中的一个,我仍然不知道从这里到哪里去。感谢任何帮助。
问题内容: 现在,寻找这种解决方案的时间已经太久了,我不确定是错过了还是只是输错了什么,但是我的Gradle脚本无法编译。我正在迁移到Gradle,并且对它很陌生。我已经非常习惯于使用Maven进行依赖管理,但是Gradle似乎对我来说最好。通过运行以下代码段: 注意:我确实应用了java,maven,nexus,shadow和rebel插件。 当我运行Gradle任务时,会遇到此错误: 如果我从
到根构建生成文件并从命令行运行gradle,获取: > 其中:生成文件'D:\AndroidStudioProjects\AndroidMain\Build.Gradle'行:23 错误:评估根项目“AndroidMain”时出现问题。 我不认为它在错误的地方。 根项目和添加的子项目都有gradle包装器。 如有任何指示,将不胜感激。 编辑:本练习的全部目的是将核心java代码导入android项