我在AndroidStudio中创建了一个带有几个模块的简单项目.每个模块的gradle脚本包含以下代码:
android { compileSdkVersion 18 buildToolsVersion "18.1.1" defaultConfig { minSdkVersion 7 targetSdkVersion 18 } }
如何将此代码移动到主build.gradle脚本(项目的脚本)?此代码适用于所有子模块.
在最顶层的build.gradle中定义它似乎工作
subprojects { afterEvaluate {project -> if (project.hasProperty("android")) { android { compileSdkVersion 22 buildToolsVersion '22.0.1' } } } }
在main项目的build.gradle中,您应该编写类似下一个内容:
project.extensions.add("buildToolsVersion", "19.0.3")
在子项目中,您可以使用此扩展:
buildToolsVersion rootProject.buildToolsVersion
您可以在此处找到更多信息
这适用于Android Studio 0.8.9.使用默认的gradle包装器1.12-all.
应用程序是Lite和Pro使用的库,其中Lite/Pro是我正在制作的应用程序的两种不同风格.我想在所有模块之间共享配置.全局配置位于根gradle.build文件中,所有子项目/模块都可以读取这些属性.
我的项目结构是:
Project/ gradle.build settings.gradle App/ gradle.build Lite/ gradle.build Pro/ gradle.build
在Project/gradle.build中我添加了一个子项目配置:
subprojects { ext.global_compileSdkVersion = 19 ext.global_buildToolsVersion = "20.0.0" ... }
ext.[var name]添加可在子项目中读取的变量.我添加了前缀"global_",因此更容易看到我的属性.(另请注意,我使用等号将值赋给变量)
在每个子项目/模块中,gradle文件如下所示:
android { compileSdkVersion global_compileSdkVersion buildToolsVersion global_buildToolsVersion ... }
注意!
Android Studio IDE似乎不知道子项目中的"ext",但gradle会这样做.所以它在查看gradle文件时显示为警告,但构建仍然有效.因为它不知道"ext",它似乎也不知道你添加的变量,所以这些也将在IDE中作为警告加下划线.但它的工作原理:)
您可以build.gradle
在项目的根目录(即包含所有模块的文件夹)中创建一个,并使用它来配置rootProject.
例如,如果你有:
MyApp - Module1/ - build.gradle - Module2/ - build.gradle - settings.gradle
您可以在旁边添加build.gradle settings.gradle
.
在上面的示例中,您实际上有3个Gradle项目:Module1,Module2和rootProject.
所以在这里build.gradle
,你可以这样做:
// use the ext object to add any properties to the project project.ext { compileSdkVersion = 18 }
然后在您的模块中,您可以:
android { // here we reference the root project with the "rootProject" object. compileSdkVersion rootProject.ext.compileSdkVersion }
嗯有趣的是,我找不到解决方案,因为我应该在Android Studio中使用它.但是我在这里只提供了这个解决方案,因此在Android Studio编辑器中没有任何警告并且有效.
在每个人的root build.gradle中定义:
buildscript { ext { projectAppCompatVersion = 'com.android.support:appcompat-v7:23.3.0' projectSupportVersion = 'com.android.support:support-v4:23.3.0' projectCompileSdkVersion = 23 projectMinSdkVersion = 22 // 15 android 4.0.3 for release projectTargetSdkVersion = 23 //23 requires permission requests , 22 for release projectBuildToolsVersion = "24.0.0rc2" } }
并在没有警告的情况下访问:
compileSdkVersion project.properties.projectCompileSdkVersion buildToolsVersion project.properties.projectBuildToolsVersion
但代码完成和变量解析不能像我期望的android studio那样工作.