web-dev-qa-db-ja.com

Gradleで現在のビルドタイプを取得する方法

私の質問は非常に直接的で理解しやすいです。

質問

Gradleでは、実行時に現在のビルドタイプを取得する方法はありますか?たとえば、アセンブルデバッグタスクを実行する場合、build.gradleファイル内のタスクは、このタスクがデバッグビルドバリアントに関連しているという事実に基づいて決定できますか?

サンプルコード

apply plugin: 'com.Android.library'
ext.buildInProgress = "" 

buildscript {

repositories {
    maven {
        url = url_here
    }
}

dependencies {
    classpath 'com.Android.tools.build:gradle:3.0.1'
}
}


configurations {
     //get current build in progress here e.g buildInProgress = this.getBuildType()
}

Android {
     //Android build settings here
}

buildTypes {
         release {
          //release type details here
      }

       debug {
           //debug type details here
       }

    anotherBuildType{
          //another build type details here
    }

   }
}

dependencies {
      //dependency list here
}

repositories{
         maven(url=url2_here)
}


task myTask{
      if(buildInProgress=='release'){
           //do something this way
      }
      else if(buildInProgress=='debug'){
          //do something this way
      }
      else if(buildInProgress=='anotherBuildType'){
         //do it another way
     }
}

要約

myTask {}内で進行中のビルドタイプを正確に取得する方法はありますか?

9
Naz_Jnr

applicationVariantsを解析することにより、正確なビルドタイプを取得できます。

applicationVariants.all { variant ->
    buildType = variant.buildType.name // sets the current build type
}

実装は次のようになります。

def buildType // Your variable

Android {
    applicationVariants.all { variant ->
        buildType = variant.buildType.name // Sets the current build type
    }
}

task myTask{
    // Compare buildType here
}

また、 this および this 同様の回答を確認できます。

更新

Thisthis 質問による回答は、質問者が問題を解決するのに役立ちました。

9
UnlikePluto