我正在从事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和此错误; 请帮助我,在此先感谢
答案 0 :(得分:4)
根据我的研究,找不到简单的方法,或者我应该说一种从androidx退缩的正确方法,要解决上述问题,只需将以下内容添加到您的 gradle.properties < / p>
android.useAndroidX=true
android.enableJetifier=true
这可能会导致另一个问题,例如
执行任务失败 ':react-native-navigation:compileReactNative57_5DebugJavaWithJavac'
此错误的原因(如果发生),将您的android项目迁移到androidx之后,您的许多react-native库都附带了本机Java代码并且尚未更新,因此手动进行更新很繁琐,我能够做到这一点通过简单地运行
即可使用此库jetifiernpm 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)
请按照以下步骤操作:
希望这对您有帮助
答案 3 :(得分:0)
我遇到了类似的问题:我正在为RN 0.60.0更新一个应用程序。就我而言,我在build.gradle中有一个依赖项,其版本中带有“ +”,并且该特定依赖项已更新,这破坏了我的构建。
对于我来说,明确指定版本号可以解决我的问题。
./gradlew app:dependencies
将显示您的依赖关系树;这也可能会指出正确的方向。