问题描述:
我正在自学android,现在我做一个APP需要用到SlingMenu,于是我使用了GitHub上jfeinstein10/SlidingMenu(https://github.com/jfeinstein10/SlidingMenu)这个包,同时
我又导入了ActionBarSherlock(http://actionbarsherlock.com/)。
根据SlidingMenu的README.md中的Setup with ActionBarSherlock步骤,添加了依赖,如步骤4
把SlidingMenu的各种Acitivity的父类都改为了Sherlock___Activity。
这个时候都会包buildToolsVersion版本过低的问题,然后我把版本全部改为最新如:
我的module的build文件:
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.izp.thenews" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' compile project(':library-sliding-menu') }
我更改之后的SlingMenu的build文件:
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.0.0-alpha9' } } apply plugin: 'com.android.library' dependencies { compile project(':actionbarsherlock') compile 'com.android.support:appcompat-v7:23.1.1' } android { compileSdkVersion 17 buildToolsVersion "23.0.2" defaultConfig { minSdkVersion 15 targetSdkVersion 23 } sourceSets { main { java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] manifest.srcFile 'AndroidManifest.xml' } } }
然后这里就出现下面的这样的几百行的attribute...has already been defined错误
图片描述
图片描述
图片描述
图片描述
2.我在网上google了一下,有人说吧V7换成V4就行了。
于是我把V7包去掉,添加最新V4依赖,然后attribute...has already been defined错误是不见了,
但是有出现了No resource found的问题,如图所见。
图片描述
3.只使用SlidingMenu,在项目中删除ActionBarSherlock依赖:
如果在V4下,报错如下:
4.只使用SlidingMenu,在项目中删除ActionBarSherlock依赖:
如果在V7下,报错如下:
我删除ActionBarSherlock这个module的步骤
1、删除所有项目对ActionBarSherlock的依赖
2、在ProjectStructure中删除ActionBarSherlock
3、在project目录下删除ActionBarSherlock
5.新建一个项目重新仅仅导入SlidingMenu,在默认的V7下仅仅更改了buildToolsVersion之后居然正常编译运行。
但奇怪删除V7改为V4之后就报下面的资源问题:
6.新建一个项目重新仅仅导入SlidingMenu,在默认的V7下仅仅更改了buildToolsVersion之后居然正常编译运行。
但奇怪删除V7改为V4之后就报下面的资源问题:
7.新建一个项目不导入SlidingMenu,仅仅把在默认的V7改为V4之后就报下面的资源问题:
Clean peoject无数次,重新启动无数次,无解依然不能编译通过。
可是我明明有一个项目既是V4又导入了SlidingMenu的呀,如下:
目前为止这个项目都还正常啊,可是我另外新建一个就编译通不过了,哎!
8、最后大家平时遇到这种问题怎么解决的?我具体什么做错了?
人家SlingMenu已经声明了需要 v7 包支持,你改成 v4 当然不行了,AppCompat 属于 v7 。再则检查你的各个 module ,是否引用了相同的 support包,如果有两个以上(含两个)引用了相同的包,就会冲突报错,解决办法就是把多余的 support 包解除掉,只留一个。