2017-08-01 12 views
-2

私のbuild.gradleファイルに次の行が含まれていますbuild.VERSION_CODESをbuild.gradleファイルでどのように参照しますか?

targetSdkVersion 26 

私はこのようになり、それを好む:

targetSdkVersion Build.VERSION_CODES.o 

が可能ということですか?はるかにクリーンで安全に見えますが、この構文は機能しません。

+1

'Build.VERSION_CODES.O'は静的な最終的なintなので、実際にそれを使って' 26'にコンパイルします。誰もがOが26であることを知っている。特に定数でも変数でもない場合は、どうして短時間で長めにするのが好きですか? ///あなたが 'ext.myTargetSdkVersion = 26'を定義し、それを後でアップグレードすることに決めたなら、それは完全にうまくいきます。しかし、私はあなたの現在の方法では何のポイントも見ません。 –

+0

ターゲットSDKのバージョンは、同期する必要がある複数のプロジェクト(私たちにとって)に表示されます。さもなければ、lintはエラーになります。それに加えて、 'compileSdkVersion'も同じ理由で一致する必要があります。これを、すべての使用例に対して1つの場所で定義するとよいでしょう。複数の場所でリテラルを参照するより定数を定義するほうが、プログラミングの方が優れています。フレームワーク/ sdkがすでに定義している定数を使用する方が良いでしょう。 – Bungles

+0

ダウン投票?何のために? – Bungles

答えて

1

これは可能ですか?

いいえ、ごめんなさい。 Buildは、Androidフレームワークに存在するJavaクラスです。 Gradleでは利用できません。

+0

あなたはそれを 'android.Build.etc'と参照できると思いましたか? – Bungles

+0

@Bungles:Androidアプリでは、はい。 Gradleスクリプトで、いいえ、AFAIK。 – CommonsWare

+0

buildscriptクラスパスにAndroid SDKを追加する必要があります。その値は下位互換性のために決して変更されないので、 '26'を使うと完全に有効です。 –

2

ターゲットSDKのバージョンが複数のプロジェクトに表示されます[...]だから我々は、プロジェクト全体がアクセス定義の話をしているすべての使用事例

のために一つの場所でこれを定義するとよいでしょう時間値を作成する。私はあなたも省略でき考える

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

    defaultConfig { 
     minSdkVersion rootProject.ext.minSdkVersion 
     targetSdkVersion rootProject.ext.targetSdkVersion 
     // ... 
    } 

    // ... 
} 

dependencies { 
    compile "com.android.support:design:$supportLibVersion" 
    compile "com.google.firebase:firebase-messaging:$playServicesVersion" 
    // ... 
} 

// ... 

を:

ext { 
    compileSdkVersion = 26 
    buildToolsVersion = "26.0.0" 
    minSdkVersion = 17 
    targetSdkVersion = 26 

    supportLibVersion = "26.0.0" 
    playServicesVersion = "10.2.6" 
} 

そして今、あなたがそうのようなモジュールでbuild.gradleを、これらの値を参照することができます。あなたのルートプロジェクトbuild.gradleでこれを入れて

結果の名前がDSLメンバー名と競合しない限り、プレフィックスはrootProject.ext.です。

Groovyでは、二重引用符を使用する限り、文字列に変数を使用できます。

+0

ありがとう!ええ、これは私たちがしたことに似ています。私はプラットフォームで既に定義されている値を利用して改善する方法があるかどうか疑問に思っていました。 – Bungles

関連する問題