美文网首页
2019-06-19 React Native 第三方库混用An

2019-06-19 React Native 第三方库混用An

作者: KingAmo | 来源:发表于2019-06-19 15:33 被阅读0次

    我们知道,RN项目低于0.60是没法使用androidx的。
    我的RN 项目今天在Android端打包(build release)时,突然报了这个错:

    Manifest merger failed : Attribute application@appComponentFactory value=(androidx.core.app.CoreComponentFactory) from [androidx.core: core:1.0.0-beta01] AndroidManifest.xml:22:18-86
    is also present at [com.android.support:support-compat:28.0.0-alpha3] AndroidManifest.xml:22:18-91 value=(android.support.v4.app.CoreComponentFactory).
    Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:11:5-49:19 to override.

    各种Google了一番,得出结论是因为 第三方库混用Androidx 和 support库导致冲突的问题,至于 Androidx 是什么,可以查一下,网上的资料很多。我的项目依赖的某个第三方库使用了 androidx , 而项目使用的是 support 库,导致出现这个问题。 这两个库是互斥的,只能选择其中的一个,不能混用。。

    按照上面报错的提示,在项目的AndroidManifest.xml<Application> 标签下加入 tools:replace="android:appComponentFactory", 然后导入 tools 命名空间,重新运行,又报了新的错误。

    网上给的解决方案是 migrate to androidx , 让你迁移到 Androidx. 但是这个方案其实是原生android的解决方案,而对于React Native 来说,这个方案是行不通的,具体原因官方在github 上有讨论和说明。

    而官方给出的解决方案需要你对Android原生很精通,还需要时间成本。这样一来,最方便的解决方案就是,把使用了androidx 的第三方库的版本降级,换成还未迁移到androidx 的那个版本。

    android/ 目录下运行

    ./gradlew :app:dependencies
    

    然后搜索 androidx:

    image.png
    可把你逮到了~ 原来是 :react-native-device-info 的一个依赖 :com.google.android.gms:play-services-gcm:+ -> 17.0.0 使用了androidx

    赶紧搜一下,这个 play-services-gcm 一天前刚升级到 17.0.0, 新版本正是使用了 androidx !! 然后看一下 :react-native-device-infobuild.gradle:

    image.png
    就是这里了!!版本号用了 '+',然后就自动升级到 17.0.0 了...于是, 把这个版本号写死,并且去掉 +, 终于运行成功了。

    或者使用 jetifier

    不过,jetifier并不是万能的,例如:
    https://github.com/mikehardy/jetifier#troubleshooting

    其他原因

    https://juejin.im/post/596415805188250da35f0bf4

    其他原因2

    Android Studio 全局搜索 useAndroidXenableJetifier ,如果主项目或其他第三方module中有这两个字段,确保他们的值是 false
    我安装了react-native-viewpager,这个第三方库这两个字段是true

    相关文章

      网友评论

          本文标题:2019-06-19 React Native 第三方库混用An

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