问题描述:
我正在自学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 包解除掉,只留一个。