美文网首页
集成第三方sdk冲突解决记录

集成第三方sdk冲突解决记录

作者: Duzzi | 来源:发表于2019-09-28 20:04 被阅读0次

每次集成第三方sdk都很蛋疼,一堆冲突,这里做个解决冲突的记录。

1. error: duplicate value for resource 'attr/remove_mode' with config

第三方aar中的attr命名与主项目里的自定义控件attr命名冲突,修改主项目的自定义控件attr命名即可

2. <item> inner element must either be a resource reference or empty.

旧版本id定义是这样的:

<item name="xxx" type="id">false</item>

新版本id定义是这样的:

<item type="id" name="id_name" />

也可以降级gradle到3.0及以下,但是不推荐

3. Manifest merger failed with multiple errors, see logs

build日志不是很全,这里使用命令查看详细日志

./gradlew assembleDebug --stacktrace --debug

编译日志中搜索关键字Merging result

可以定位到

Merging result: ERROR
/Users/xxx/AndroidManifest.xml:46:5-79 Warning:
        Element uses-permission#android.permission.ACCESS_FINE_LOCATION at AndroidManifest.xml:46:5-79 duplicated with element declared at AndroidManifest.xml:40:5-79
/Users/xxx/AndroidManifest.xml Error:
        uses-sdk:minSdkVersion 16 cannot be smaller than version 17 declared in library [xxxx.aar] /Users/xxx/.gradle/caches/transforms-1/files-1.1/xxxx.aar/01eb0f6c47002252569dda697eacd98e/AndroidManifest.xml as the library might be using APIs not available in 16
        Suggestion: use a compatible library with a minSdk of at most 16,
                or increase this project's minSdk version to at least 17,
                or use tools:overrideLibrary="com.xxx" to force usage (may lead to runtime failures)
                

可以看出是aar中的minSdk和主项目的minSdkVersion不一致,将两者修改为一致即可

4. FileProvider冲突

同3查看编译日志,可以定位到

Merging result: ERROR
/Users/xxx/AndroidManifest.xml:46:5-79 Warning:
        Element uses-permission#android.permission.ACCESS_FINE_LOCATION at AndroidManifest.xml:46:5-79 duplicated with element declared at AndroidManifest.xml:40:5-79
/Users/xxx/AndroidManifest.xml:435:13-68 Error:
        Attribute provider#android.support.v4.content.FileProvider@authorities value=(@string/file_provider_authorities) from AndroidManifest.xml:435:13-68
        is also present at [xxxx.aar] AndroidManifest.xml:19:13-64 value=(com.xxx.fileprovider).
        Suggestion: add 'tools:replace="android:authorities"' to <provider> element at AndroidManifest.xml:433:9-441:20 to override.
/Users/xxx/AndroidManifest.xml:440:17-51 Error:
        Attribute meta-data#android.support.FILE_PROVIDER_PATHS@resource value=(@xml/file_paths) from AndroidManifest.xml:440:17-51
        is also present at [xxxx.aar] AndroidManifest.xml:24:17-50 value=(@xml/filepaths).
        Suggestion: add 'tools:replace="android:resource"' to <meta-data> element at AndroidManifest.xml:438:13-440:54 to override.

主项目的FileProvideraar里的FileProvider冲突,修改主项目里的FileProvider,新建自定类MyFileProvider 继承 FileProvider
重新定义在manifest中即可

5. style attribute 'attr/preferenceTheme (aka com.xxx:attr/preferenceTheme)' not found.

删除aar中values.xmlpreferenceTheme

6. error: '1' is incompatible with attribute tl_textBold (attr) enum [BOTH=2, NONE=0, SELECT=1].

aar中和主项目使用了同样的第三方库,自定义控件的tl_textBold一个用的是integer,一个用的是enum,手动改一下就好了

7. error: resource color/_f8f8f8 (aka com.xxxx:color/_f8f8f8) not found.

颜色缺失,手动加上_f8f8f8吧

8. Program type already present: MTT.ThirdAppInfoNew

第三方aar和主项目都集成了腾讯x5,删除其中之一即可

  1. 如果是手动jar包集成,删除冲突对应的jar包即可
  2. 如果是手动aar包集成,用压缩软件打开aar,删除冲突的jar
  3. 如果是通过远程依赖方式集成,可以通过exclude排除冲突的库
     api ('com.xxx.xxx:xxxxxx:1.0.0'){
        exclude(module:'alicloud-android-utdid')
        exclude(module:'alicloud-android-httpdns')
        exclude(module:'gson')
    }
  1. 如果冲突的库版本不一致,需要降级或升级库保证版本一致,然后排除冲突的库

相关文章

网友评论

      本文标题:集成第三方sdk冲突解决记录

      本文链接:https://www.haomeiwen.com/subject/qhdoectx.html