1. ホーム
  2. android

[解決済み] lint タスクで gradle のビルドが失敗する

2022-12-29 22:37:17

質問

Android Studio 0.4.0で作成した簡単なandroidプロジェクトを持っています。 私はGradle 1.9とGradle Android Plugin 0.7を使用しています。昨日、私はJake Whartonの ButterKnife ライブラリ を私のgradleビルドスクリプトに追加しました。

dependencies {
            compile 'com.android.support:support-v4:19.0.0'
            compile 'com.android.support:appcompat-v7:19.0.0'

            // Butterknife
            compile 'com.jakewharton:butterknife:4.0.1'
}

Android Studioからアプリケーションを実行すると、ビルドは正常に実行され、私のデバイス上で正しく実行されます。しかし、(コマンドラインから)試したところ gradle build を実行すると、ビルドに失敗します。以下は、私の lint レポートの一部です。

InvalidPackage: Package not included in Android

/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.

何か見落としているのかもしれませんが、ターミナルでプロジェクトをビルドできないのは、AndroidプロジェクトのCIの可能性を阻んでいるのではないでしょうか。

どんな助けでも素晴らしいです。

どのように解決するのですか?

とは 0.7.0 で、Lintのサポートが拡張されましたが、常に正しく動作するわけではありません。(例: butterknifeライブラリ)

解決策は、Lintエラーが見つかった場合にビルドを中断しないようにすることです。

私は https://android.googlesource.com/platform/tools/base/+/e6a5b9c7c1bca4da402de442315b5ff1ada819c7

(実装 https://android.googlesource.com/platform/tools/base/+/e6a5b9c7c1bca4da402de442315b5ff1ada819c7/build-system/gradle/src/main/groovy/com/android/build/gradle/internal/model/DefaultAndroidProject.java )

(ディスカッション https://plus.google.com/+AndroidDevelopers/posts/ersS6fMLxw1 )

android {
  // your build config
  defaultConfig { ... }
  signingConfigs { ... }
  compileOptions { ... }
  buildTypes { ... }
  // This is important, it will run lint checks but won't abort build
  lintOptions {
      abortOnError false
  }
}


また、特定のLintルールだけを無効にして、他のルールではビルドを失敗させ続ける必要がある場合は、これを使います。

/*
 * Use only 'disable' or only 'enable', those configurations exclude each other
 */
android {
  lintOptions {
    // use this line to check all rules except those listed
    disable 'RuleToDisable', 'SecondRuleToDisable'
    // use this line to check just listed rules
    enable 'FirstRuleToCheck', 'LastRuleToCheck'
  }
}