React Native:迁移到AndroidX

时间:2019-06-22 16:49:48

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

我今天运行了我的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。 帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

昨天我遇到了同样的问题,最后弄明白了,上述错误的原因是在将您的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

答案 1 :(得分:1)

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

中的AndroidX

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