пожалуйста, учтите, что я не очень знаком с Android development.
Пытаясь сгенерировать подписанный пакет Android для моего приложения React Native, я наткнулся на следующую ошибку:
Task :app:mergeDexRelease FAILED
D8: Program type already present: com.horcrux.svg.Brush$BrushType
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: com.horcrux.svg.Brush$BrushType
...
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:mergeDexRelease'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> 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: com.horcrux.svg.Brush$BrushType
- Я знаю, что
BrushType
- это класс из react-native-svg
- Я запустил
gradlew app:dependencies
и не нашел модуля в зависимости от Brush
или чего-либо связанного на com.horcrux.svg
или react-native-svg
- Уже пробовали очистить проект, удалить
.iml
файлы, сделать недействительными Android Студийные кеши, перестроить, переустановить node_modules
и т. д. - Пробовал возиться с
build.gradle
и gradle.properties
без везения - Я прочитал это android руководство по дублирующим классам также без везения
Я понимаю что есть 2 или более зависимостей, использующих com.horcrux.svg.Brush$BrushType
, но я не могу их найти. Я полагаю, что, как только я их найду, я смогу сделать
implementation(:my-library) {
exclude ...
}
Правильно?
gradle.properties
android.useAndroidX=true
android.enableJetifier=true
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2560m
android / app / build.gradle
dependencies {
implementation project(':react-native-appearance')
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.facebook.react:react-native:+" // From node_modules
implementation project(':watermelondb')
implementation project(':react-native-calendar-events')
if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
implementation jscFlavor
}
}
Заранее спасибо.