具有自定义属性的库冲突

时间:2019-05-22 10:55:00

标签: android attributes libraries

我正在尝试同时使用Shimmer库和Slider View library

不幸的是,两个库中都有一个自定义属性,它们相互冲突:我遇到了duplicate attribute found错误。

我已经读到这是一个错误,到目前为止还没有解决方案,我们无法在每个库的上下文中创建自定义属性。但是除了我自己实现滑块视图之外,还有其他解决方法吗?

Android resource compilation failed 
app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:4619: error: duplicate value for resource 'attr/shape' with config ''.
\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:4619: error: resource previously defined here.
\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml: error: file failed to compile.````

1 个答案:

答案 0 :(得分:0)

我认为有解决该问题的方法。但是,由于许可问题,我不确定您是否可以这样做。

我没有测试。不知道是否会工作。但我认为您可以尝试。如果仍然无法解决问题,请通知我,然后删除答案。

为避免该错误,您可以求助于可以访问AndroidImageSlider的源代码这一事实。这样,您可以将源代码作为模块导入,而不是将该库添加为AAR文件。 这样,您可以重命名attr/shape,并将其重新编译为项目的一部分。

1)从项目(从build.gradle等)中删除AndroidImageSlider

2)然后,创建一个名为“库”(File -> Project Structure -> Modules -> + -> Android Library)的新模块

3)这将为您的项目<ProjectPath>/library

创建一个新文件夹。

4)下载库源文件(使用git或作为zip文件),并将库文件夹的内容替换为所下载库文件夹中的内容(您可以忽略所有其他文件夹...您可以替换的文件)相同的名称。)

5)删除文件library/gradle-mvn-push.gradle,并从library/build.gradle中删除以下行:

 apply from: './gradle-mvn-push.gradle'

6)在您的app/build.gradle

中添加以下几行
dependencies {
    ...
    implementation project(":library")
    ...
}

7)同步并重建您的项目。

8)打开文件./library/src/main/res/values/attrs.xml并重命名属性shape(例如customShape)。

9)尝试再次构建。自重命名该属性以来,可能会发生一些错误。修复它们。

10)您可以按如下方式将视图添加到布局中:

这将允许您编译项目。缺点是您有责任自行修复/更新库。另一方面,您可以控制库build.gradle,然后可以更新构建工具版本,支持库版本等。

无论如何,这可能对您有帮助