安装开源项目 MultiType (基于 RecyclerView)出现的各种问题 -- 自己的第一篇博客
2016-12-22 18:48
721 查看
一、引入开源项目的方式
使用开源项目 MultiType 的两种方式:
1、maven引入:在主Module 的 build.gradle 中加入
2、创建为 library 包:在 https://github.com/drakeet/MultiType/releases 将开源项目 MultiType 下载下来,将其中的 library 包复制拷贝到与主 Module 同个目录下并重命名为 multitype 如下:
项目目录:
接着,修改 重命名为 multitype 后的文件夹下的 build.gradle 为
最后,在主Module 中引入该 libaray,如下:
注意: maven 引入时若指定的 sdk最低版本 与开发的项目的 sdk最低版本 冲突则要在主Module (似乎是在这里,忘了)的中覆盖引入项目的编译版本。创建 library 包时则可以直接在该 library 包的 build.gradle 文件中修改这个开源项目的 sdk编译版本。无论哪种方式都要注意 主Module的 sdk最低版本 不能低于 开源项目的 sdk最低版本,不然当手机的版本低于 开源项目的 最低版本则用不了这个开源项目。
例子:公司项目中的 minSdkVersion 8 而 开源项目的 minSdkVersion 9 ,只能修改 公司项目的 minSdkVersion 为 9。
二、两种方式各自出现的问题如下:
1、sdk最低版本冲突:开源项目指定的 sdk最低版本 与开发的项目的 sdk最低版本 冲突。提示如下:
Error:Execution failed for task ':xxx:processXxxDebugManifest'.
> Manifest merger failed with multiple errors, see logs
2、依赖包重复:开源项目需要用 RecyclerView,为兼容低版本的系统,引入了 v7包(目录结构如下:)中的 recyclerview 的包。
开源项目中的 build.gradle 中的依赖如下:
而 RecyclerView 的使用是依赖于 v4 包的。而公司项目中有将 v7 中的 v4的jar包(v4的jar包下含 annotation 和 v4)引入单独成为一个 library 包,这会于引入的 开源项目的依赖包()重复。
公司项目将 v7 自成一个 library 包如下:
错误提示:
Error:Execution failed for task ':taojinroad:transformClassesWithJarMergingForXxxDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/annotation/IntegerRes.class
三、解决方法
maven 引入的解决方法
1、sdk最低版本冲突
要在主Module (似乎是在这里,忘了)的中覆盖引入项目的 minSdkVersion 。前提是主 Module 的 minSdkVersion 不能低于 开源项目的 minSdkVersion,否则在 系统版本 太低的手机上无法使用这一开源项目。
2、依赖包重复
将开源项目中的依赖包去掉,如下:
创建开源项目为 library 包的解决方法
1、sdk最低版本冲突
可以修改 主 Module 的 minSdkVersion 或 开源项目的 minSdkVersion 使它们一致。前提是主 Module 的 minSdkVersion 不能低于 开源项目的 minSdkVersion,否则在 系统版本 太低的手机上无法使用这一开源项目。
2、依赖包重复
前提:library 包中含 build.gradle 文件且可在里面修改相应的依赖。也就是说不能将 开源项目的 jar包 或 aar包 直接引入成为一个 library(上面提到的 公司里的创建的一个 v7 的 library 包就是这种情况。以 jar包形式引入则无法在 build.gradle 中看到引入的依赖,因此无法修改这些依赖),而应该直接将源代码引入成为一个 library 包。如下:
不能用此方法的:
可用此方法的:
将 build.gradle 中的
使用开源项目 MultiType 的两种方式:
1、maven引入:在主Module 的 build.gradle 中加入
dependencies {
......
compile 'me.drakeet.multitype:multitype:2.3.0' }
2、创建为 library 包:在 https://github.com/drakeet/MultiType/releases 将开源项目 MultiType 下载下来,将其中的 library 包复制拷贝到与主 Module 同个目录下并重命名为 multitype 如下:
项目目录:
接着,修改 重命名为 multitype 后的文件夹下的 build.gradle 为
apply plugin: 'com.android.library'
最后,在主Module 中引入该 libaray,如下:
dependencies { ......
compile project(':multitype')
}
注意: maven 引入时若指定的 sdk最低版本 与开发的项目的 sdk最低版本 冲突则要在主Module (似乎是在这里,忘了)的中覆盖引入项目的编译版本。创建 library 包时则可以直接在该 library 包的 build.gradle 文件中修改这个开源项目的 sdk编译版本。无论哪种方式都要注意 主Module的 sdk最低版本 不能低于 开源项目的 sdk最低版本,不然当手机的版本低于 开源项目的 最低版本则用不了这个开源项目。
例子:公司项目中的 minSdkVersion 8 而 开源项目的 minSdkVersion 9 ,只能修改 公司项目的 minSdkVersion 为 9。
二、两种方式各自出现的问题如下:
1、sdk最低版本冲突:开源项目指定的 sdk最低版本 与开发的项目的 sdk最低版本 冲突。提示如下:
Error:Execution failed for task ':xxx:processXxxDebugManifest'.
> Manifest merger failed with multiple errors, see logs
2、依赖包重复:开源项目需要用 RecyclerView,为兼容低版本的系统,引入了 v7包(目录结构如下:)中的 recyclerview 的包。
开源项目中的 build.gradle 中的依赖如下:
dependencies { testCompile 'junit:junit:4.12' compile 'com.android.support:support-annotations:24.2.1' compile 'com.android.support:recyclerview-v7:24.2.1' }
而 RecyclerView 的使用是依赖于 v4 包的。而公司项目中有将 v7 中的 v4的jar包(v4的jar包下含 annotation 和 v4)引入单独成为一个 library 包,这会于引入的 开源项目的依赖包()重复。
公司项目将 v7 自成一个 library 包如下:
错误提示:
Error:Execution failed for task ':taojinroad:transformClassesWithJarMergingForXxxDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/annotation/IntegerRes.class
三、解决方法
maven 引入的解决方法
1、sdk最低版本冲突
要在主Module (似乎是在这里,忘了)的中覆盖引入项目的 minSdkVersion 。前提是主 Module 的 minSdkVersion 不能低于 开源项目的 minSdkVersion,否则在 系统版本 太低的手机上无法使用这一开源项目。
2、依赖包重复
将开源项目中的依赖包去掉,如下:
dependencies {
......
compile ('me.drakeet.multitype:multitype:2.3.0'){
exclude group: 'com.android.support', module: 'support-v4' exclude group: 'com.android.support', module: 'support-annotations'
} }
创建开源项目为 library 包的解决方法
1、sdk最低版本冲突
可以修改 主 Module 的 minSdkVersion 或 开源项目的 minSdkVersion 使它们一致。前提是主 Module 的 minSdkVersion 不能低于 开源项目的 minSdkVersion,否则在 系统版本 太低的手机上无法使用这一开源项目。
2、依赖包重复
前提:library 包中含 build.gradle 文件且可在里面修改相应的依赖。也就是说不能将 开源项目的 jar包 或 aar包 直接引入成为一个 library(上面提到的 公司里的创建的一个 v7 的 library 包就是这种情况。以 jar包形式引入则无法在 build.gradle 中看到引入的依赖,因此无法修改这些依赖),而应该直接将源代码引入成为一个 library 包。如下:
不能用此方法的:
可用此方法的:
将 build.gradle 中的
dependencies { testCompile 'junit:junit:4.12' compile 'com.android.support:support-annotations:24.2.1' compile 'com.android.support:recyclerview-v7:24.2.1' }
修改为
dependencies { testCompile 'junit:junit:4.12' // compile 'com.android.support:support-annotations:24.2.1' // compile 'com.android.support:recyclerview-v7:24.2.1' compile('com.android.support:recyclerview-v7:23.2.1') { //注意:这里的RecyclerView 的版本与 v7的 library中的 v4包的版本一样是 23.2.1 // exclude group: 'com.android.support'//这个是 exclude 掉所有 support 包 exclude group: 'com.android.support', module: 'support-v4' exclude group: 'com.android.support', module: 'support-annotations' } compile project(':android-support-v7-appcompat')//这是 v7 的 library包 含 v4 和 annotation }
相关文章推荐
- glmis项目工作日志4_解决RecyclerView中使用CheckBox时出现数据错乱的问题。
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- 你必须了解的 RecyclerView 的五大开源项目 - 解决上拉加载、下拉刷新和添加 Header、Footer 等问题
- 自己安装drozer时出现各种问题的解决
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- RecyclerView五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- 包含RecyclerView的module导入项目出现的问题
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- 你必须了解的 RecyclerView 的五大开源项目 - 解决上拉加载、下拉刷新和添加 Header、Footer 等问题
- Android开源项目第一篇——个性化控件(View)篇
- 基于LGPL开源项目 Log4cpp安装与使用