在我的 android 项目中,我使用了几个库。关键是当我添加一个新的时,例如:
compile(group: 'com.example', name: 'example_sdk', version: '+', ext: 'aar') {
transitive = true;
}
在尝试构建项目时,我从 gradle 得到了下一个输出错误:
D:\AndroidStudioProject\MyProject\res\values-w820dp\dimens.xml Error:(2) Resource entry activity_horizontal_margin is already defined. D:\AndroidStudioProject\MyProject\build\intermediates\exploded-aar\com.example\example_sdk\3.2.7\res\values-w820dp-v13\values-w820dp-v13.xml Error:(2, 1) Originally defined here. Error:Execution failed for task ':processMyAppUniversalDebugResources'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\Tools\Android_SDK\build-tools\23.0.1\aapt.exe'' finished with non-zero exit value 1
我的猜测是,在某些库中,我们有默认定义的值 - w820d/dimen.xml,它们相互冲突。但问题是如何合并它们,因为 key 是相同的。
values-w820d/dimen.xml content :
<resources>
<!-- Example customization of dimensions originally defined in res/values/dimens.xml
(such as screen margins) for screens with more than 820dp of available width. This
would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
<dimen name="activity_horizontal_margin">64dp</dimen>
当我将 activity_horizontal_margin
重命名为 activity_horizontal_margin_default
- 我的项目的冲突已解决,但与其他库出现冲突。
也许我可以添加一些 gradle-override 属性或修改 gradle 脚本以忽略它?
最佳答案
当我问这个问题时,我已经做了一个解决方法。我有两个相互冲突的库,它们在 values-w820d/dimen.xml
中默认定义了 activity_horizontal_margin
值。因此,由于其中一个库是本地 .aar - 我将其解压缩并删除了冲突文件,然后将其压缩回来,问题就解决了。这种方法不是那么优雅 - 但它对我有用。我在等待更好的解决方案,但它没有出现。所以这种困惑应该由图书馆开发人员处理。这是 Xavier Ducrohet 的有用答案:
https://stackoverflow.com/a/16351116/3874721
关于android - 资源条目 activity_horizontal_margin 已定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35989228/