Gradle升级3.2.1(gradle-4.6-all.zip) 编译的时候DataBinding 报了一堆错误。
这里先贴出错误(100个,都是这两种,各50个):
D:\Android\workspace_zhy\lingdong\hyznlib\build\generated\source\apt\debug\android\databinding\V1CompatDataBinderMapperImpl.java:452: 错误: 需要常量表
达式
case com.huayi.smarthome.R.layout.hy_item_scene_execute_task_list_layout:
^
D:\Android\workspace_zhy\lingdong\hyznlib\build\generated\source\apt\debug\android\databinding\V1CompatDataBinderMapperImpl.java:457: 错误: HyItemScen
eExecuteTaskListLayoutBinding是抽象的; 无法实例化
return new com.huayi.smarthome.databinding.HyItemSceneExecuteTaskListLayoutBinding(bindingComponent, view);
^
100 个错误
(ps:编译要看到具体的错误,在Terminal窗口,执行:gradlew build,就可以看到报错的位置)
经过调试,终于找到问题,放在Library Module 的databinding 生成的文件只生成在library的build文件下,而不能生成到app的build文件下,而library下的R文件里的id不是常量
可以对比下:
app的R文件,是final修饰的
library的R文件,并没有final修饰,是可变的,所以报了上面的错误(需要常量表达式)
这样处理问题就简单了,把module的aar放到主工程去,问题就解决了。
对了,记得
api(name: 'xxxxxx', ext: 'aar') 这个也要剪切到主项目的build.gradle