2016-09-20 13 views
4

私はデフォルトでGradle Plugin v2.2.0を使用するAndroidスタジオ2.2にアップデートしました。これはデバッグ目的の方がはるかに優れています。ディストリビューションの目的で、私はまだv2.1.3を使用しなければなりません。私は、プロジェクトのgradleスクリプトで条件付きのコマンドを追加することを考えていましたが、私はそれを行う方法がわかりません。 次のテストはGradle - 条件付きクラスパスをビルドスクリプトの依存関係に追加

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     if (project.name.startsWith("X")) 
     { 
      classpath 'com.android.tools.build:gradle:2.1.3' 
     } 
     else 
     { 
      classpath 'com.android.tools.build:gradle:2.2.0' 
     } 
    } 
} 

に動作します。しかし、私はそれが

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     if (IS_RELEASE_VERSION) 
     { 
      classpath 'com.android.tools.build:gradle:2.1.3' 
     } 
     else 
     { 
      classpath 'com.android.tools.build:gradle:2.2.0' 
     } 
    } 
} 

のようなものである必要があり、私はそれを行う方法を見つけ出すことはできません。 ありがとうございます

+0

これを可能にすることには何も気にしません。ここでの本当の問題は、なぜリリース用の古いバージョンを使用する必要があるかです。 –

+0

私たちのリリースでは追加のプラグインを使用していますが、それは2.1.3と互換性があります – lionscribe

+0

あなたはおそらく古いバージョンに固執するつもりです。デバッグおよびリリースビルドに異なるバージョンを使用することはできません。それがあなたのbuild.gradleの何かについて - ライブラリ版や設定のように - それは問題ではないでしょう。しかし、ビルドスクリプトの依存関係は、ビルドスクリプト自体のための文字通りの依存関係です。デバッグおよびリリースビルドの概念は、ビルドスクリプトによって定義されたものであり、ビルドスクリプトの依存関係がロードされるまで評価することはできません。 –

答えて

4

まあ、私はそれを解決したと信じて、それは非常に簡単です。 gradle.startParameter.taskNamesプロパティを確認する必要があります。ここで私はそれをどのようにコード化したのですか:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     if (gradle.startParameter.taskNames.size() > 0 && gradle.startParameter.taskNames.get(0).contains("Release")) 
     { 
      classpath 'com.android.tools.build:gradle:2.1.3' 
     } 
     else 
     { 
      classpath 'com.android.tools.build:gradle:2.2.0' 
     } 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 
} 

これまでのところうまくいきます。必要に応じて、「リリース」値をフレーバーバリアント(フレーバーを使用している場合)に変更することができます。

+0

男、非常に便利です! – vlasevich

関連する問題