build.gradle
とdependencies { classpath 'com.Android.tools.build:gradle:0.13.3'}
を含むapply plugin: 'com.Android.application'
ファイルがあります。
デバッグビルドを実行すると、次のようになります。
gradle clean assembleDebug
:myapp:preBuild
(...)
:myapp:compileDebugJava
Note: C:\path\to\MyClass.Java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:myapp:preDexDebug
(...)
:myapp:assembleDebug
BUILD SUCCESSFUL
-Xlint:unchecked
を基になるタスクに追加するにはどうすればよいですか? Javaコンパイルオプション のGradleプラグインユーザーガイドは役に立ちません。
Gradle Plugin User Guide on Manipulating Tasks および Gradle DSL doc for JavaCompile に基づいて次の解決策を見つけました。
追加 build.gradle
:
preBuild {
doFirst {
JavaCompile jc = Android.applicationVariants.find { it.name == 'debug' }.javaCompile
jc.options.compilerArgs = ["-Xlint:unchecked"]
}
}
Gradleの構成フェーズ中のアプリケーションバリアントはnull
であり、必要なJavaCompile
タスクも存在しないため、代わりに実行フェーズで変更を行います。
@Konrad Jamrozikによって提示された解決策を試しましたが、プロジェクトのフレーバーが原因で、私のプロジェクトでは機能しませんでした。
コンパイラーの動作を大幅に変更するものではなく、追加の警告をオンにするだけであることを考えると、リリースビルドとデバッグビルドの両方に追加されることは問題ではないと思います。そのため、この回答には、フレーバーを使用するよりクリーンな方法があります。 -Xlint:uncheckedをAndroid Gradleベースのプロジェクトに追加するには
私の場合、影響を受けるモジュールのbuild.gradleファイルにこれを追加します。
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
}
これをbuild.gradleファイルに追加します。
Android { // <---
tasks.withType(JavaCompile) {
configure(options) {
options.encoding = 'UTF-8'
options.debug = true
options.failOnError = true
options.warnings = true
options.compilerArgs << '-Xlint:deprecation' << '-Xlint:unchecked'
}
}