Android工程依赖了使用androidx的包,导致Androidx和Android Support冲突

        公司项目几年前已经转Androidx了,但是开发SDK给第三方使用时,第三方还是在Android上做开发,所以我就研究了下在Android工程上能否依赖Androidx的包,先说结论:不能

        网上很多资料感觉都是抄来抄去,我不知道抄过去的作者这么做有什么意义,自己是不是压根就没试验,那些互相抄的解决办法根本就没用,所以我自己一步一步摸索,最后总结以下五步,可以成功让你的Android工程集成androidx的依赖库并运行起来,但是你的APP会闪退,也就是说,你即使成功依赖上了androidx的库,也不能正常使用。

1、将编译 SDK 设置为 Android 9.0(API 级别 28)或更高版本。

2、在你的工程gradle.properties中添加

#是否使用androidx
android.useAndroidX=true

不要添加 android.enableJetifier=true 属性,否则你Android工程的support包都会找不到。

3、同步、编译、运行,会出现如下报错:

对依赖的androidx的包进行exclude操作,如: 

api ("com.xxxx.xxxx:third:x.x.x") {
    exclude module: 'core'
    exclude module: 'support-v4'
}

exclude内容根据你报错内容中冲突的模块自行添加。

4、同步、编译、运行,会出现如下报错:

在你工程的app模块下的build.gradle中,android标签下添加

packagingOptions {
    exclude 'META-INF/androidx.fragment_fragment.version'
} 

其中exclude的内容是编译报错时More than one file was found with OS independent path后面的内容。

5、重复4的操作,直到不报错即可运行起来项目。

        编译运行错误都解决了,项目跑起来了,但是会闪退,因为你exclude了东西,自然就缺少了功能,所以Android工程无法依赖androidx的库。

参考:

AndroidX 概览  |  Android 开发者  |  Android Developers

android support包和 androidx 冲突解决方式:_衣我以夜的博客-CSDN博客_androidx兼容support

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值