发布自定义Android库到JitPack上遇到的问题及解决方案

前提

每次做项目的时候,都会遇到列表页面,所以决定写一个通用的Adapter,并且打算用Kotlin完成。写完了,不算完事,还要发布到Github上,与他人共享。

发布失败
注:Log这一栏显示红色就是发布失败,显示绿色才是发布成功。

很郁闷,到底是什么原因呢?之前也发布过自定义库,没有出现过错误啊?!!结果这次写完一发布,竟然失败了。
当时也不知道看log,就在网上搜,网上也没搜到,因为本身这类博客就很少,碰到问题解决问题的就更少了。于是就各种看JitPack的官网,在上面找答案,没想到,误打误撞还真找到了。
先说一下原因:jitpack的android-maven-gradle-plugin版本要和gradle版本对应好。那具体怎么对应呢?
点我看一下对应关系
截至目前最新对应关系图
注:左边的Plugin Version是android-maven-gradle-plugin版本,右边的版本是Gradle版本,下面黄色标记部分。是在gradle-wrapper.properties中的distributionUrl=https://services.gradle.org/distributions/gradle-4.6-all.zip

这样对应好了,按照正常的步骤,即可发布成功。

后来,在发布封装的结合Databinding的通用Adapter的时候,在JitPack上又失败了。上图中2.1.3、2.1.4版本。报的错误是:
Unresolved reference: databinding
Unresolved reference: ViewDataBinding
Unresolved reference: DataBindingUtil
又懵了,一看报的错,还好说,应该是没把包引进去。这里顺便说一下,在JitPack上build失败,如何看log,点一下红色的图标即可,本博客第一张图红圈里的图标
于是在libaray的build.gradle文件中添加**apply plugin: ‘kotlin-kapt’**不管用。
又添加
dependencies {
kapt ‘com.android.databinding:compiler:3.2.1’
}
kapt {
generateStubs = true

这些内容,上传,发布Release,还是报错失败。

还尝试了很多方法,也不管用。这是开始出现了焦虑,紧张,胸闷,出冷汗。这个问题这么难解决吗?马上准备放弃了,如果没法发布成库与大家一起分享,那就自己独享吧,但是还有点不甘心。
最后,又直接在库里添加databinding包,想着这次要是不成功没就真的放弃了。结果不出意料,真的没成功,就在要放弃的那一刻,点开log,报的错换了。
AndroidX Error: Both old and new data binding packages are available in dependencies. Make sure you’ve setup jettifier for any data binding dependencies and also set android.useAndroidx in your gradle.properties file.
心中又燃起了一点希望,重新整理心情,继续调查。这个东西需要在libaray的build.gradle文件中设置一下,关键是怎么设置呢?又犯难了。找了好久,也没找到设置方法。最后仔细比对,没有上传gradle.properties,因为这里面设置了这两项。
上传,打Release,然后上JitPack网站看一下,build结果,哇,竟然成功了,心中真是万分喜悦,这种感觉也只有经历过折磨最后终于因不放弃的精神自己分析解决问题的人才能体会到吧。

总结

经过上面错误的各种尝试,了解了JitPack在build时,插件版本需要与Gradle版本对应。另外,除了library目录下的文件,这之外的配置文件也是需要的。
此时不由得想起一句诗:
纸上得来终觉浅,绝知此事要躬行。

最后放上我封装的库Github地址,大家有兴趣可以看一下。
Kotlin封装的通用Adapter

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值