【问题标题】:React Native: Migrate to AndroidXReact Native:迁移到 AndroidX
【发布时间】:2019-11-05 03:01:38
【问题描述】:

我今天运行我的 Android RN 项目并出现以下错误

Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
  Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
  Program type already present: android.support.v4.app.INotificationSideChannel$Stub

我认为为了解决这个问题,需要迁移到 AndroidX。

我备份了我的项目并尝试使用 Android Studio 进行操作,但无济于事。我也尝试在我的gradle.properties 文件中手动设置它

android.enableJetifier=true
android.useAndroidX=true

在此之后,我尝试从我的 app/build.gradle 中删除支持的库,并将目标 targetSdkVersion 设置为 28。

这些尝试给我带来了更多的错误,特别是这个

Execution failed for task ':react-native-navigation:compileReactNative57_5DebugJavaWithJavac'.

我正在使用带有 Wix Navigation V2 的 React Native 0.58.6。 非常感谢您的帮助

【问题讨论】:

    标签: android android-studio react-native react-native-navigation


    【解决方案1】:

    我昨天遇到了同样的问题,终于弄明白了,上面错误的原因是在将你的android项目迁移到androidx之后,你的许多react-native库都提供了原生Java代码并且没有更新,我能够使用这个库jetifier 来解决它,只需运行

    npm i --save-dev jetifier
    npx jetify
    

    但在我的情况下,仍然有一些库导致了一些问题,例如我们 react-native-fast-image 作为一种解决方法,我在 / 中创建了一个 gradle.properties node_modules/react-native-fast-image/android 并为此模块停用了 AndroidX 和 Jetifier:

    android.useAndroidX=false
    android.enableJetifier=false
    

    【讨论】:

    • 感谢您回答艾哈迈德!我相信这将不胜感激。我找到了一个“预迁移到 AndroidX”的解决方案,我还为尚未迁移的用户添加了该解决方案
    【解决方案2】:

    一旦您迁移到 AndroidX,Ahmed 发布的答案就是一个很好的解决方案。就我而言,我还不想这样做,并发现我的应用程序中只有一个库正在使用来自 this 线程的 AndroidX

    简而言之,我的解决方案是简单地yarn upgrade react-native-device-info@latest 重建后应用按预期构建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多