安装开源项目 MultiType (基于 RecyclerView)出现的各种问题 -- 自己的第一篇博客
一、引入开源项目的方式
使用开源项目 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
}
安装开源项目 MultiType (基于 RecyclerView)出现的各种问题 -- 自己的第一篇博客的更多相关文章
- 第一篇博客 安装open live writer
第一篇博客安装open live writer http://openlivewriter.org/ 有的人可能会打不开,所以我准备了一个百度云的链接地址 链接:https://pan.baidu.c ...
- 我的第一篇博客:vue-cli配置项目
注意:在安装vue-cli之前一定要确保安装了node和vue 安装配置node:下载node(https://nodejs.org/en/)然后一路无脑安装 查看安装是否成功:node –versi ...
- 项目冲刺Beta第一篇博客
Beta版本冲刺计划安排 1.当天站立式会议照片: 2.工作分工: 团队成员 分工 张洪滨060 排行榜界面美化 陈敬轩059 注册成功界面美化 黄兴067 登录界面美化 林国梽068 答题界 ...
- 欢迎阅读daxnet的新博客:一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为"希赛网" ...
- 一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为“希赛网”)个人空间发布过一些 ...
- 基于Microsoft Azure、ASP.NET Core和Docker的博客系统
欢迎阅读daxnet的新博客:一个基于Microsoft Azure.ASP.NET Core和Docker的博客系统 2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客 ...
- 解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET
解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET 解决基于BAE python+bottle开发上的一系列问题 分类: python ...
- 鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 百篇博客分析OpenHarmony源码 | v54.01
百篇博客系列篇.本篇为: v54.xx 鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 51.c.h.o 下图是一个可执行文件编译,链接的过程. 本篇将通过一个完整的小工程来阐述E ...
- 鸿蒙内核源码分析(信号生产篇) | 信号安装和发送过程是怎样的? | 百篇博客分析OpenHarmony源码 | v48.03
百篇博客系列篇.本篇为: v48.xx 鸿蒙内核源码分析(信号生产篇) | 年过半百,依然活力十足 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管 ...
随机推荐
- 基于Android的物理类游戏,源代码(JAVA)分享
游戏视频DEMO:http://v.youku.com/v_show/id_XNTM5MzM1Mzg0.html?from=s1.8-1-1.2 说明:一个自己做的Android上的物理类游戏,物理引 ...
- hdu 4504 威威猫系列故事——篮球梦_简单dp
题目链接 题意:你现在分数为a,对方分数为b,你比赛还有n分钟,每次进攻需要15分钟,现在你先进攻,每次进攻可以得1或2或3,对方每次进攻得一分,问超过对方分数有多少种打法 思路:因为情况太多要用__ ...
- JSTL核心标签库学习笔记
写的很简单,不一定会有用,如果想要详细的话,建议看API啊--- 不过在这里推荐一个地址,http://www.yiibai.com/jstl/ 希望对你们有帮助啊,很好的教材啊 1.<c:i ...
- ubuntu 14.04 下试用Sublime Text 3
很多源代码都没有IDE支持的,尤其是开源的源代码.从github上下载的,很多也不用IDE.包括我自己公司的代码,基本都是脚本,也不用IDE.通常情况下,都是用notepad++.UE之类的文本编辑器 ...
- PHP商城购物车类
<?php /* 购物车类 */ // session_start(); class Cart { //定义一个数组来保存购物车商品 private $iteams; private stati ...
- xib和Storyboard 创建Cell的方式
xib 方式 .在Cell.h文件中加一个宏 #define cellIdentifier @"customCell" . ViewController中: - (void)vie ...
- java与.net比较学习系列(4) 运算符和表达式
上一篇总结了java的数据类型,得到了冰麟轻武等兄弟的支持,他们提出并补充了非常好的建议,在这里向他们表示感谢.在后面的文章中,我会尽力写得更准确和更完善的,加油! 另外,因为C#是在java之后,也 ...
- AFNetwork 作用和使用方法具体解释
转自:http://www.maxiaoguo.com/clothes/269.html AFNetworking是一个轻量级的iOS网络通信类库.它建立在NSURLConnection和NSOper ...
- ping不通的几种可能原因
平时使用中常常会碰到ping不通的情况,ping不通的原因有非常多,比方路由设置问题,比方网络问题,下面列出几点原因: 1.太心急.即网线刚插到交换机上就想Ping通网关,忽略了生成树的收敛 ...
- 用ajaxFileUpLoad上传文件不能正确取得返回值的问题
刚開始没有认为ajax请求的dataType參数的重要性,用了ajaxFileUpLoad插件后,假设页面代码例如以下: fileElementId : ['imageToUpload'], url ...