Android Studio 3.2.0
にアップデートしてから、次の問題が発生します。
タスク ':mobile:dataBindingGenBaseClassesDebug'の実行に失敗しました。
> com.ACME.database.model.Orderを推測できませんでした
これも見られます answer 、これは「パッケージ名は小文字で始まらなければならない」ことを示唆しています。
...このvariable
割り当てが原因であるかのように、似ているように見えます。
<data class=".databinding.OrderFragmentBinding">
<variable name="order" type="com.ACME.database.model.Order"/>
...
</data>
見つかった: クラスをバインドするための新しいデータバインディングコンパイラ 、動作の変更を説明していません。
[〜#〜] q [〜#〜]:そのような割り当てもその命名規則の影響を受けますか?つまり、(大文字のパッケージ名を変更する以外に)データバインディングv2の「推測」が機能する可能性はありますか?
gradle.properties
のこれらの設定は、androidx
データバインディングコンパイラを有効にします。
Android.databinding.enableV2 = false
Android.enableExperimentalFeatureDatabinding = true
フェッチされたパッケージでそれを見ることができます:
Download https://dl.google.com/dl/Android/maven2/androidx/databinding/databinding-compiler/3.2.0/databinding-compiler-3.2.0.pom
Download https://dl.google.com/dl/Android/maven2/androidx/databinding/databinding-compiler/3.2.0/databinding-compiler-3.2.0.jar
そしてそれは不平を言う:
WARNING: The option setting 'Android.databinding.enableV2=false' is experimental and unsupported.
The current default is 'true'
WARNING: The option setting 'Android.enableExperimentalFeatureDatabinding=true' is experimental and unsupported.
The current default is 'false'
Fragment
をデフォルトのv2データバインディングコンパイラでデータバインディングするには、androidx.fragment.app.Fragment
ではなくAndroid.support.v4.app.Fragment
が必要になる可能性があります。これも一時的な解決策ですが、v1データバインディングコンパイラに戻すよりも優れています。
3.2にアップデートした後も同じことが起こります(移行前にアプリケーションが機能し、コードは変更されていません)...パッケージ名の最初の文字に小文字が含まれていても、この「推測」の問題です。
<data>
...
<variable name="rule" type="com.gta.viewmodels.vmRule"/>
...
</data>
したがって、パッケージ名を更新した後も問題は残ると「推測」します(問題が発生した場合は、とにかくベストプラクティスです毎アップグレードするたびにAndroid Studio !)。
とにかく、私はgradle.propertiesのv2データバインディングをダウングレードすることで解決しました(「サポートされていない」警告が表示されますが、無視してください):
Android.databinding.enableV2=false
Android Studio PGはこのアサーションを十分にテストしていないようです( ここ ):
Data Binding V2 is now enabled by default and is compatible with V1.