自从Android Studio 3.2.0更新以来,我面临以下问题:
Execution failed for task ‘:mobile:dataBindingGenBaseClassesDebug’.
> couldn’t make a guess for com.ACME.database.model.Order
还看到了answer,这提示“软件包名称必须以小写字母开头”.
…看起来很像,似乎是因为该变量赋值是原因:
<data class=".databinding.OrderFragmentBinding">
<variable name="order" type="com.ACME.database.model.Order"/>
...
</data>
发现:New data binding compiler for binding classes,它不能解释行为的变化.
问:此类分配也受该命名约定影响吗?我的意思是,有什么机会(除了更改大写的包名之外)使数据绑定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数据绑定编译器更好.
我最近注意到,在不向< data />标签.生成的名称始终首字母大写,其余全为小写.