记一次升级Android Gradle Plugin后databing编译报错填坑经历

栏目: IOS · Android · 发布时间: 6年前

内容简介:最近在新的项目重构项目代码加上升级一下项目的Android Gradle Plugin的版本,老人们至今还在用2.3,不得不佩服。在升级过程中遇到了一些坑,这里总结一个databing相关的问题。备忘一下升级前编译正常,升级后编译失败,报错如下:也有可能是编译后databing自动生成的类报下面的错误:

最近在新的项目重构项目代码加上升级一下项目的Android Gradle Plugin的版本,老人们至今还在用2.3,不得不佩服。在升级过程中遇到了一些坑,这里总结一个databing相关的问题。备忘一下

问题背景:

  • 升级前版本号:

    • Android Gradle Plugin版本: classpath "com.android.tools.build:gradle:3.0.0"

    • databing compile依赖: kapt "com.android.databinding:compiler:3.0.0"

  • 升级后版本号:

    • Android Gradle Plugin版本:3.2.1

    • databing compile依赖: kapt "com.android.databinding:compiler:3.0.0"

遇到问题:

升级前编译正常,升级后编译失败,报错如下:

[kapt] An exception occurred: java.lang.NullPointerException
at java.io.File.<init>(File.java:277)
at android.databinding.annotationprocessor.ProcessExpressions.onHandleStep(ProcessExpressions.java:77)
at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.runStep(ProcessDataBinding.java:203)
at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.access$000(ProcessDataBinding.java:188)
at android.databinding.annotationprocessor.ProcessDataBinding.doProcess(ProcessDataBinding.java:90)
at android.databinding.annotationprocessor.ProcessDataBinding.process(ProcessDataBinding.java:65)

	……
	
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

也有可能是编译后databing自动生成的类报下面的错误:

~/CommonLoadingMoreLayoutBinding.java:57: error: cannot find symbol
      @Nullable DataBindingComponent component) {
                ^
  symbol:   class DataBindingComponent
  location: class CommonLoadingMoreLayoutBinding

解决方案:

在尝试了stackoverflow的各种方案以后,最终找到了问题原因,总结如下:

  • 解决方案:

    • Android Gradle Plugin版本升级为: classpath "com.android.tools.build:gradle:3.2.1"

    • databing compile依赖升级为: kapt "androidx.databinding:databinding-compiler:3.2.1"

  • 注意事项:

    1. databing compile依赖从 com.android.databinding:compiler 切换为 androidx.databinding:databinding-compiler

    2. databing compile依赖的版本号与Android Gradle Plugin版本保持一致。

    3. 目前Android官方逐渐把support等相关库都切换到了androidx,所以后续这一类问题都可以考虑替换到androidx


以上所述就是小编给大家介绍的《记一次升级Android Gradle Plugin后databing编译报错填坑经历》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

再看电商

再看电商

黄若 / 电子工业出版社 / 2014-7-1 / CNY 39.00

电商行业在中国经历了十年的高速增长。如果说十年前的网上购物是新鲜潮人的尝试的话,那么今天几亿网购人群的规模,零售市场18,000亿人民币的年交易额,正催生着一个改变人们生活习惯的全新行业。互联网正在从各个维度重新定义生产、品牌、娱乐、传播、消费,电商毫无疑问的在购物领域影响着越来越多人的生活。同时,这个行业连年亏损,顾客服务良莠不齐,也受到广泛关注。作者从地面零售到电子商务,从跨国公司高管到管理民......一起来看看 《再看电商》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试