Android Gradle:将参数传递给“应用于:<;文件>`

Android Gradle:将参数传递给“应用于:<;文件>`,android,gradle,Android,Gradle,我想把一些常见的样板文件gradle脚本代码放到共享的.gradle文件中。然后,我可以使用apply from:语句重用它 问题是是否可以将参数传递给应用的脚本? 例如,我想重复使用以下锅炉板: apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' apply plugin: 'org.robolectric' configurations { apt } androi

我想把一些常见的样板文件
gradle
脚本代码放到共享的
.gradle
文件中。然后,我可以使用
apply from:
语句重用它

问题是是否可以将参数传递给应用的脚本? 例如,我想重复使用以下锅炉板:

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'org.robolectric'

configurations {
    apt
}

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig {
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode rootProject.ext.versionCode
        versionName rootProject.ext.versionName
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
问题在于:
应用插件:“com.android.application”
。我希望在应用程序项目或android库项目中重用此代码。所以我需要一些参数来决定应用哪个插件:

// assuming <isApplicationProject> - is a script parameter
if (isApplicationProject) {
    apply plugin: 'com.android.application'
} else {
    apply plugin: 'com.android.library'
}
//假设-是脚本参数
if(isApplicationProject){
应用插件:“com.android.application”
}否则{
应用插件:“com.android.library”
}
当然,在这种特殊情况下,我可以定义一些项目级属性,但我想知道是否可以在脚本调用时传递参数

  • 应用自:是行包含,不能传递参数
  • 但是,它确实在相同的上下文中运行,因此也在相同的项目中运行,因此您可以执行以下操作:
    ext.isUsingApp=true;从“xxx”开始申请
  • 如果这是唯一的区别,我建议您采取以下措施:
    myinclude.gradle:

  • 然后在build.gradle应用程序中:

    apply plugin: 'com.android.application'
    apply from: '../includes/myinclude.gradle'
    
    然后在libs build.gradle中:

    apply plugin: 'com.android.library'
    apply from: '../includes/myinclude.gradle'
    
    对于简单的布尔值,无需创建参数

    apply plugin: 'com.android.library'
    apply from: '../includes/myinclude.gradle'