2

Gradle ビルドで Android Studio を使用しています。私のbuild.gradleでは、ビルド タイプごとに変数の値が異なるようにします。

ext {
    //By default, the value of myVar is 'debug'
    myVar = 'debug'
}

android {
   buildTypes {
       release {    
            //update value of myVar to 'release'
            project.ext.set("myVar","release")
        }


        debug {
             //update value of myVar to 'debug'
             project.ext.set("myVar","debug")
        }

    }
}

//I defined a task to check the value of myVar
task checkVar () {
   println "My var is $myVar"
}

check.dependsOn(checkVar)

コマンドを実行するとgradle clean assembleRelease、出力テキストが表示されることを期待していましたMy var is release。でも、なるほどMy var is debug。の値が にmyVar変更されないのはなぜreleaseですか?

私が達成したいのは、実行中に現在のビルドタイプを取得することです。これを達成するためのより良い方法はありますか?

4

1 に答える 1

0

これはプロジェクト スコープの変数であるため、機能しません。ビルド タイプ ブロックは単なる構成であるため、ここで実際に何が起こるか (少し単純化されています):

  1. デフォルト値「debug」が割り当てられた「myVar」という名前の変数を宣言します
  2. リリース構成ブロックを実行し、「myVar」の値を「release」に設定します
  3. デバッグ構成ブロックを実行し、「myVar」の値を「debug」に戻します。

「checkVar」タスクを実行すると、最後に割り当てられた値が出力されます。

参考までに: 2. と 3. を単純化するには、次のように呼び出します。project.myVar = 'whatever'

于 2015-01-19T11:46:49.930 に答える