我的Android应用程序对此build.gradle文件没有任何问题。
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.marshall.opensurvey"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
repositories {
jcenter()
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.android.support:design:23.1.0'
compile 'com.android.support:support-annotations:23.1.0'
compile 'com.android.support:support-v4:23.1.0'
compile 'com.android.support:support-v13:23.1.0'
compile 'com.squareup.okhttp:okhttp:2.0.0'
// Material Drawer Library by Mike Penz
compile('com.mikepenz:materialdrawer:4.3.9@aar') {
transitive = true
}
// Android Iconics Library by Mike Penz
compile 'com.mikepenz:iconics-core:1.7.9@aar'
compile 'com.mikepenz:google-material-typeface:1.2.0.1@aar'
// Google Analytics Library
compile 'com.google.android.gms:play-services-analytics:8.1.0'
// Circle Image View Library
compile 'de.hdodenhof:circleimageview:2.0.0'
// Flat Button Library
compile 'info.hoang8f:fbutton:1.0.5'
// Process Button Library
compile 'com.github.dmytrodanylyk.android-process-button:library:1.0.4'
// Fancy Button Library
compile 'com.github.medyo:fancybuttons:1.5@aar'
// Card View and Recycler View Library
compile 'com.android.support:cardview-v7:23.1.0'
compile 'com.android.support:recyclerview-v7:23.1.0'
}
但是,当我在build.gradle文件中添加了另一个依赖项并进行了同步时,它开始显示错误,并说该属性是“rippleColor”#39;已经定义了。我放在gradle文件中的新依赖是这个。
// Material Design Library
compile 'com.github.navasmdc:MaterialDesign:1.5@aar'
我假设显示此错误是因为新添加的错误包含的属性与先前添加的库中已定义的名称相同。我应该在这个文件中修改什么,以便第三方库不会相互崩溃?
答案 0 :(得分:2)
问题是MaterialDesign库没有为其属性添加前缀。
属性在attrs.xml
中定义,您必须将rippleColor
属性重命名为其他属性。
这里一个好的建议是为这个库特有的所有属性加上前缀,这样就不会与其他库发生冲突。
所以它看起来像这样
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="CustomAttributes">
<!-- Color of ripple animation -->
<attr name="mdl_rippleColor" format="color|reference" />
<!-- You can also prefix all other attributes -->
</declare-styleable>
</resources>
之后,您必须在MaterialDesign库的代码中找到所有这些内容,并为它们添加前缀,以便可以通过编程方式读取这些属性。一个是在LayoutRipple (Line: 56)班。
这个图书馆似乎还没有被积极维护。大约200个未解决的问题,以及30个拉取请求。
为了简化您的一切,我修改并修复了源代码(我还更新到了最新的v23.1.0支持库)并将其上传到SNAPSHOT maven中央存储库。您可以通过执行以下两个步骤来使用它:
将SNAPSHOT maven存储库添加到root build.gradle
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
如下所示:SNAPSHOT maven repository
将依赖项添加到build.gradle
compile 'com.mikepenz.thirdparty:material-design-library:1.5.0-SNAPSHOT'
Here's the link to the SNAPSHOT *.aar。 maven组是不同的,因为我不允许与原始maven组一起托管它。
答案 1 :(得分:1)
我修复了这个错误。请检查
<attr name="rippleColor" format="color" />
在values文件夹的attrs.xml文件中。重构此“rippleColor”值,以便它不会影响您对此名称的当前使用。然后在您的gradle文件中:
compile 'com.github.navasmdc:MaterialDesign:1.5@aar'
compile 'com.nineoldandroids:library:2.4+'
现在应该解决这个问题。
答案 2 :(得分:1)
我想它已经解决但我发现了一个不同的解决方案。它由 niwinnm 解决 问题原因com.android.support:design所以你应该将 com.github.navasmdc:MaterialDesign:1.5@aar 改为'com.github.vajro:MaterialDesignLibrary:1.6' 强>
答案 3 :(得分:0)
只需删除build.gradle中的代码行
即可compile'com.github.navasmdc:MaterialDesign:1.5@aar'
如果您的项目中存在这种情况,则可以提供帮助。