web-dev-qa-db-ja.com

Java GradleプラグインでコンパイルするときにAndroidコンパイラオプションを追加する方法は?

build.gradledependencies { 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プラグインユーザーガイドは役に立ちません。

21
Konrad Jamrozik

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タスクも存在しないため、代わりに実行フェーズで変更を行います。

5
Konrad Jamrozik

@Konrad Jamrozikによって提示された解決策を試しましたが、プロジェクトのフレーバーが原因で、私のプロジェクトでは機能しませんでした。

コンパイラーの動作を大幅に変更するものではなく、追加の警告をオンにするだけであることを考えると、リリースビルドとデバッグビルドの両方に追加されることは問題ではないと思います。そのため、この回答には、フレーバーを使用するよりクリーンな方法があります。 -Xlint:uncheckedをAndroid Gradleベースのプロジェクトに追加するには

私の場合、影響を受けるモジュールのbuild.gradleファイルにこれを追加します。

gradle.projectsEvaluated {
   tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
    }
}
25
Andrew

これを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'
   }
}
0
Yousha Aleayoub