冲突错误描述
AGPBI: {"kind":"error","text":"error: duplicate value for resource \u0027attr/layout_anchorGravity\u0027 with config \u0027\u0027.","sources":[{"file":"G:\\.gradle\\caches\\transforms-1\\files-1.1\\appcompat-v7-25.3.1.aar\\aa3a481d7d5a34e0e9c4966911ce7c4a\\res\\values\\values.xml","position":{"startLine":202,"startColumn":4,"startOffset":24572,"endColumn":68,"endOffset":24636}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"error: resource previously defined here.","sources":[{"file":"G:\\.gradle\\caches\\transforms-1\\files-1.1\\appcompat-v7-25.3.1.aar\\aa3a481d7d5a34e0e9c4966911ce7c4a\\res\\values\\values.xml","position":{"startLine":202,"startColumn":4,"startOffset":24572,"endColumn":68,"endOffset":24636}}],"original":"","tool":"AAPT"}
报的错误是v7包下找不到 attr/layout_anchorGravity 这个是属性,经过对jar包的搜索, 这个属性是属于Constraint包下的一个属性,v7包下并没有这个属性。
解决方法
- 用过 gradlew app:dependencies > dep.txt 将项目的所有依赖写入到文件中
- 查看dep.txt文件中jar包的重复依赖
- 最后发现是由于项目本身依赖了v7包,MapboxSDK也引用了v7包,所以在引入7.4.0版本的Mapbox包是需要这样写
implementation('com.mapbox.mapboxsdk:mapbox-android-sdk:7.4.0') {
exclude group: 'com.android.support'
}
- 如果引入的是8.0版本以上的jar包,同时还引入了com.android.support:design的话,则不会报上面的错误,会在运行项目时提示facebook的soloader下的Api18TraceUtils类重复
AGPBI: {"kind":"error","text":"Program type already present: com.facebook.soloader.Api18TraceUtils","sources":[{}],"tool":"D8"}
- 所以如果是引入8.0版本的包时
implementation('com.mapbox.mapboxsdk:mapbox-android-sdk:8.1.0') {
exclude group: 'com.android.support'
}
implementation ('com.android.support:design:25.3.1') {
exclude module: 'conceal'
}
- 如果还需要引入Mapbox的语言本地化jar包时,需要这样写
//Mapbox语言本地化
implementation('com.mapbox.mapboxsdk:mapbox-android-plugin-localization-v8:0.12.0-SNAPSHOT') {
exclude group: 'com.mapbox.mapboxsdk', module: 'mapbox-android-sdk'
exclude group: 'com.android.support'
}