用于覆盖 build.gradle 中的属性的 Gradle 命令行参数

Kev*_*van 7 groovy android command-line-arguments build.gradle android-gradle-plugin

每当导入现有的 android 项目时,在大多数情况下,我们需要更改已安装工具版本号后的值

在项目/build.gradle

buildscript {
    ...
    dependencies {
        classpath 'com.android.tools.build:gradle:x.x.x'
    }
}
Run Code Online (Sandbox Code Playgroud)

在项目/应用程序/build.gradle

android {
    compileSdkVersion xx
    buildToolsVersion "xx.x.x"

    defaultConfig {
        applicationId "com.example.app.xyz"
        minSdkVersion xx
        targetSdkVersion xx
        versionCode x
        versionName "x.x"
    }
...
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:x.xx'
    compile 'com.android.support:appcompat-v7:xx.x.x'
    compile 'com.android.support:recyclerview-v7:xx.x.x'
}
Run Code Online (Sandbox Code Playgroud)

如何覆盖上述值

classpath
compileSdkVersion
buildToolsVersion
targetSdkVersion
Run Code Online (Sandbox Code Playgroud)

使用命令行参数,例如

./gradlew installDebug -PCompileSdkVersion=26 -PbuildToolsVersion=26.0.0
Run Code Online (Sandbox Code Playgroud)

或类似的东西?

我的想法是使用一个相同的命令(以我安装的 sdk 版本号作为参数)来构建任何不由我维护的项目。

如果我们必须构建由其他人管理的多个项目,这会很有帮助。它可以通过我们的命令行参数覆盖他们的构建配置来节省大量时间,这样我们就不需要每次都在每个特定位置进行更改新导入的项目。

DeK*_*szn 9

输入您的gradle.properties默认值:

SDK_VERSION=26
Run Code Online (Sandbox Code Playgroud)

用于build.gradle

android {
    compileSdkVersion project.getProperties().get("SDK_VERSION")
}
Run Code Online (Sandbox Code Playgroud)

用: ./gradlew build -PSDK_VERSION=26

PS:不要忘记,您还必须更改支持库的主要版本。