程序类型已经存在:androidx.versionedparcelable.NonParcelField

时间:2019-06-18 12:06:32

标签: android react-native react-native-android

我正在从事React Native Android项目,但我被卡在此错误上

> Task :app:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED

D8: Program type already present: androidx.versionedparcelable.NonParcelField    

FAILURE: Build failed with an exception.

我试图在build.gradle中将multi dex更改为false

  defaultconfig {...
    multiDexEnabled false 
     ...}

我不想迁移到androidx,我只想摆脱androidx和此错误; 请帮助我,在此先感谢

4 个答案:

答案 0 :(得分:4)

根据我的研究,找不到简单的方法,或者我应该说一种从androidx退缩的正确方法,要解决上述问题,只需将以下内容添加到您的 gradle.properties < / p>

android.useAndroidX=true
android.enableJetifier=true

这可能会导致另一个问题,例如

  

执行任务失败   ':react-native-navigation:compileReactNative57_5DebugJavaWithJavac'

此错误的原因(如果发生),将您的android项目迁移到androidx之后,您的许多react-native库都附带了本机Java代码并且尚未更新,因此手动进行更新很繁琐,我能够做到这一点通过简单地运行

即可使用此库jetifier
npm i --save-dev jetifier
npx jetify 

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

android.useAndroidX=false
android.enableJetifier=false

答案 1 :(得分:1)

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

简而言之,我的解决方案是简单地对纱线进行升级react-native-device-info @ latest重建应用后按预期构建

答案 2 :(得分:0)

请按照以下步骤操作:

  1. 打开Android Studio
  2. 单击顶部菜单栏上的“重构”
  3. 也点击迁移AppCompat

希望这对您有帮助

答案 3 :(得分:0)

我遇到了类似的问题:我正在为RN 0.60.0更新一个应用程序。就我而言,我在build.gradle中有一个依赖项,其版本中带有“ +”,并且该特定依赖项已更新,这破坏了我的构建。

对于我来说,明确指定版本号可以解决我的问题。

./gradlew app:dependencies将显示您的依赖关系树;这也可能会指出正确的方向。