Android support升级到androidx (v4 v7 包冲突 解决方案)
androidx 是对android.support.xxx包的整理后产物。由于之前的support包过于混乱,所以,google推出了 androidX。在不使用Androidx时会导致出现许多错误,以下是将support包转为androidx过程:随着Android系统版本不断地迭代更新,每个版本中都会加入很多新的API进去,但是新增的API在老版系统中并不存在,因此这就出现了一个向下兼容的问
第一,包名。之前Android Support Library中的API,它们的包名都是在android.support.*下面的,而AndroidX库中所有API的包名都变成了在androidx.*下面。这是一个很大的变化,意味着以后凡是android.*包下面的API都是随着Android操作系统发布的,而androidx.*包下面的API都是随着扩展库发布的,这些API基本不会依赖于操作系统的具体版本。
第二,命名规则。吸取了之前命名规则的弊端,AndroidX所有库的命名规则里都不会再包含具体操作系统API的版本号了。比如,像appcompat-v7库,在AndroidX中就变成了appcompat库。
Android studio v4 v7 包冲突 解决方案
具体做法有以下二种:
第一种方案
由于第三方包中的v4 jar一般比较旧,将v4包从libs目录下删除,重新添加在线的依赖库v4包,在build.gradle中添加依赖:
implementation 'com.android.support:support-v4:28.0.0'
注意此时的v4包的版本号要和你主工程module的v7包的版本要一致,(一般情况下相同版本的依赖包不会冲突),然后重新build工程就可以了;
例:出现下面错误
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
com.Android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException:
翻译过来就是Jar包冲突,然后看了一下,第三方库中的libs下,依赖了一个v4的jar包,而主工程中又依赖了一个v7的库而导致的冲突;
将v4包从libs目录下删除,重新添加在线的依赖库v4包,就可以了;
第二种方案:
不用删除第三方库中的V4包,直接在主工程Module的build.gradle文件中添加如下:
implementation('com.android.support:appcompat-v7:28.0.0') {
exclude module: 'support-v4'
}
导入第三方v4与v7冲突的解决办法
默认情况下v7中是包含V4包的,exclude 的意思就是从v7包中去除v4包这样就可以解决冲突
更多推荐
所有评论(0)