React Native: переход на AndroidX - PullRequest
3 голосов
/ 22 июня 2019

Сегодня я запустил свой проект 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'.

Я использую React Native 0.58.6 с Wix Navigation V2. Помощь будет высоко ценится

Ответы [ 2 ]

3 голосов
/ 23 июня 2019

Вчера я столкнулся с той же проблемой и, наконец, понял ее, причина вышеуказанной ошибки в том, что после переноса вашего проекта Android в Android, многие из ваших реактивных библиотек поставляют нативный код Java и не обновили, я смог решить эту проблему с помощью этой библиотеки jetifier просто запустив

npm i --save-dev jetifier
npx jetify

, но в моем случае все еще были некоторые библиотеки, вызывающие некоторые проблемы, такие как реагировать-родной-быстрый-образ в качестве обходного пути, я создал gradle.properties внутри / node_modules / response-native-fast-image / android и деактивированные AndroidX и Jetifier для этого модуля:

android.useAndroidX=false
android.enableJetifier=false
1 голос
/ 23 июня 2019

Ответ, который опубликовал Ахмед, является отличным решением после перехода на AndroidX.В моем случае я еще не хотел этого и обнаружил, что только одна библиотека в моем приложении использует AndroidX из this thread

Короче говоря, мое решение заключалось в простом yarn upgrade react-native-device-info@latestсборка приложения, как и ожидалось после его восстановления

...