2.2.3
から2.3.3
以前にリンクされた移行ガイドでは、必要なのは
- Android Gradle 2.2プラグイン以降であることを確認してください
- ビルドスクリプトからAndroid-aptプラグインを削除する
- すべてのapt、androidTestAptおよびtestAptの依存関係を新しい形式に変更します
これで、プロジェクトを正常にビルドするために必要なことはすべて完了したはずです。しかし、それは構築されません。
Gradleビルドは12秒481ミリ秒で101個のエラーと23個の警告で終了しました
すべてのエラーは同じパターンに従います。
- C:\ Users ...\FooAdapter.Java
- エラー:パッケージ
com.example.app.databinding
存在しません- エラー:シンボルクラス
ItemFooBinding
が見つかりません
興味深いメッセージがビルドコンソールにあります。
警告:次のオプションはどのプロセッサでも認識されませんでした: '[Android.databinding.minApi、Android.databinding.enableDebugLogs、Android.databinding.sdkDir、Android.databinding.bindingBuildFolder、Android.databinding.enableForTests、Android.databinding.modulePackage、 Android.databinding.generationalFileOutDir、Android.databinding.xmlOutDir、Android.databinding.artifactType、Android.databinding.printEncodedErrors、Android.databinding.isTestVariant] '
指摘したいのですが...
次の差分は、gradleファイルをどのように変更したかを示しています。
build.gradle
DiffCheckerリンクapp/build.gradle
DiffCheckerリンクまた、簡単な概要として、プロジェクトで使用される「より興味深い」プラグインとライブラリの一部を次に示します。
誰かが問題になる可能性のある手掛かりを持っていますか?ヘルプやアイデアは大いに賞賛されます!
すべてがKotlinを使用した私のプロジェクトに帰着しているようです。実際には混合しています:一部のクラスはプレーンな古いJava=を使用していますが、他のクラスはKotlinで記述されています。不完全な移行です。)
Kotlinがなければ、apt
をannotationProcessor
で置き換えるだけで十分であり、この問題にまったく遭遇しなかったと思います。
注釈はannotationProcessor
とkapt
の両方で処理する必要があります。これは、Kotlin独自の注釈プロセッサのようです。
アノテーションを使用するGradleの依存関係ごとに、アプリレベルで次のbothが必要ですbuild.gradle
:
annotationProcessor 'com.example.my.library:x.y.z
kapt 'com.example.my.library:x.y.z
まったく同じ警告が出ました。 Gradleのこの行は問題を解決しました:
kapt "com.Android.databinding:compiler:3.0.1"
うまくいけば、それは誰かを助けるでしょう
更新:3.0.1
は Androidプラグインバージョン です。
この場合のように、データバインディングに関する無数のビルドエラーが表示される場合、問題は通常、別の場所にあります。データバインディングは、無関係なビルドの問題によってそのトラックで停止し、非常に大きな不平を言います。これに対処する唯一の方法は、データバインディングに関連付けられていないビルドエラーを見つけることです。それらが修正されると、データバインディングは再びその動作を実行し、無音になります。残念ながら、すべての非データバインディング問題が見つかるまで、このアプローチを数回繰り返す必要があります。これは確かに骨の折れる作業ですが、残念ながら、Googleがより健全なビルド環境を提供できるようになるまで、他にできることはありません。
これが、ビルドエラーの制限を100を超えて増やすことをお勧めする理由です。通常、問題の原因となっている実際のエラーはリストの最初に表示されないため、表示されません。
推測される可能性があります-Dagger 2はこの問題を引き起こす一般的な原因であり、annotationProcessor
の変更に関連している可能性があります。だからダガーエラーを探してください。しかし、あなたの問題は、あなたが言及した他の注釈プロセッサのような他のものによって引き起こされる可能性があります-ビルドエラーをこまめに掘り下げるまで、あなたは確かにわかりません。