Open alwaystest opened 7 years ago
标签(空格分隔): Android Proguard
网上查的资料都只是说同时依赖了两个不同版本的Library。
但是Android Studio(Gradle)解决库依赖冲突问题中说Gradle会默认共享最高版本的依赖库,所以如果没有使用Jar方式来管理依赖的话,基本不会遇到这个问题。
查看错误日志,报错的类是classes.jar:android/support/v4/util/MapCollections$ArrayIterator.class。而使用gradle -q app:dependencies查看依赖,也确实发现低版本的SupportV4库被忽略而使用了依赖的最高版本的库。
classes.jar:android/support/v4/util/MapCollections$ArrayIterator.class
gradle -q app:dependencies
SupportV4
在Android Support Library 24.2.0及之后的版本中,为了增强效率和减小APK的大小起见,Android将V4包从一个独立的依赖包拆分成v4 compat library、v4 core-utils library、v4 core-ui library、v4 media-compat library和v4 fragment library这5个包 文/张明云(简书作者) 原文链接:http://www.jianshu.com/p/a5aa5f209895
Android Studio切换到project视角查看依赖库,果然发现了问题。
引入的Library依赖了com.android.support:support-compat:25.0.0,而之前项目已经依赖了com.android.support:support-v4:23.1.1,一个是拆分support包之后的,一个是拆分support包之前的。这两个库中都包含了android/support/v4/util中的类,所以引起了冲突。
com.android.support:support-compat:25.0.0
com.android.support:support-v4:23.1.1
android/support/v4/util
如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion说更改compileSdkVersion并不影响APK的表现,升级Support库的版本的话,IDE会提示要使Support库的大版本和compileSdkVersion保持一致。而且官方也推荐使用最新的SDK来编译。所以最后的解决办法就是升级Support库的大版本到最新,使用最新的SDK来编译。
compileSdkVersion
其实主要问题是Support包进行了一次拆分,导致Gradle没有办法分辨出com.android.support:support-compat:25.0.0和com.android.support:support-v4:23.1.1其实包含了一些相同的类(package和类名都相同)。导致最终报错类重复。
Proguard报错Support库Duplicate zip entry问题
标签(空格分隔): Android Proguard
网上查的资料都只是说同时依赖了两个不同版本的Library。
但是Android Studio(Gradle)解决库依赖冲突问题中说Gradle会默认共享最高版本的依赖库,所以如果没有使用Jar方式来管理依赖的话,基本不会遇到这个问题。
查看错误日志,报错的类是
classes.jar:android/support/v4/util/MapCollections$ArrayIterator.class
。而使用gradle -q app:dependencies
查看依赖,也确实发现低版本的SupportV4
库被忽略而使用了依赖的最高版本的库。Android Studio切换到project视角查看依赖库,果然发现了问题。
引入的Library依赖了
com.android.support:support-compat:25.0.0
,而之前项目已经依赖了com.android.support:support-v4:23.1.1
,一个是拆分support包之后的,一个是拆分support包之前的。这两个库中都包含了android/support/v4/util
中的类,所以引起了冲突。如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion说更改
compileSdkVersion
并不影响APK的表现,升级Support库的版本的话,IDE会提示要使Support库的大版本和compileSdkVersion
保持一致。而且官方也推荐使用最新的SDK来编译。所以最后的解决办法就是升级Support库的大版本到最新,使用最新的SDK来编译。其实主要问题是Support包进行了一次拆分,导致Gradle没有办法分辨出
com.android.support:support-compat:25.0.0
和com.android.support:support-v4:23.1.1
其实包含了一些相同的类(package和类名都相同)。导致最终报错类重复。