Тип программы уже присутствует: BuildConfig

Я пытаюсь создать сборку релиза, но я не могу из-за проблем с mutidex. В моем проекте задействованы все мультидексы и добавлены зависимости

Ошибка, которую я получаю:

Execution failed for task ':app:transformClassesWithMultidexlistForRelease

Caused by: com.android.build.api.transform.TransformException: Error while generating the main dex list.

и так же:

Caused by: com.android.tools.r8.errors.CompilationError: Program type already present: com.myapp.BuildConfig

Ответ 1

Вы получаете эту ошибку, потому что у вас есть библиотечный модуль, который имеет то же имя пакета, что и модуль приложения.

Решение было бы изменить имя пакета вашего библиотечного модуля. Вы можете следовать принятому ответу в этом SO, который описывает, как изменить имя пакета в студии android.

Ответ 2

В моем случае это происходило, когда я пытаюсь запустить старый проект на новой установленной Android-студии. Проблема решена запуском Build->Clean Project

Ответ 3

Ошибка: тип программы уже присутствует: somemodule/BuildConfig

причина

В моем случае у меня была (скрытая) циклическая зависимость, которую Android Studio не нашла:

  1. testutils/build.gradle использует implementation project(':somemodule')

  2. somemodule/build.gradle был проект androidTestImplementation (": testutils")

Решение

  • в моем случае вторая зависимость не была необходима, поэтому я удалил ее

Ответ 4

У меня была эта проблема после обновления Android X в студии Android. Чтобы исправить это, я пошел в File-> Открыть и открыл папку Android в моем текущем проекте флаттера. Затем я смог пойти в Build-> Чистый проект, как предложено @Seymour Mammadli.

Надеюсь, это поможет кому-то с той же проблемой.

Ответ 5

Вы можете увидеть этот ответ fooobar.com/questions/381798/... в моем случае, решив это предложение. мое приложение и мой модуль имеют одинаковое имя пакета

Ответ 6

Я решил эту ошибку, включив multiDexEnabled в build.gradle моего модуля приложения:

defaultConfig { 
    ...
    ...
    ...

    multiDexEnabled false
}