Я пытаюсь создать сборку релиза, но не могу из-за проблем с mutidex, в моем проекте включен все multidex и добавлены зависимости
Я получаю следующую ошибку:
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
Поместите содержимое обоих файлов Gradle
@sagar да, у меня есть библиотека с тем же именем пакета, я думаю, что порождает эту проблему, какое решение для этого?
был ли ответ полезен?
Вы можете увидеть этот ответ stackoverflow.com/a/26531074/4097495 в моем случае решить с помощью этого предложения. мое приложение и мой модуль имеют одинаковое имя пакета
у меня есть уникальные имена пакетов, но я все равно получаю эту ошибку
Вы получаете эту ошибку, потому что у вас есть модуль библиотеки с тем же именем пакета, что и модуль приложения.
Решением было бы изменить имя пакета вашего библиотечного модуля. Вы можете следовать принятому ответу в этом ТАК, который описывает, как изменить имя пакета в студии Android.
Если это не сработало, попробуйте выполнить ./gradle clean в проекте Android после того, как вы переименовали библиотеку.
Ошибка: тип программы уже присутствует: somemodule / BuildConfig
Причина
В моем случае у меня была (скрытая) круговая зависимость, которую Android Studio не нашла:
testutils/build.gradle использует implementation project(':somemodule')
somemodule/build.gradle имел проект androidTestImplementation (": testutils")
Решение
В моем случае это происходило, когда я пытался запустить старый проект в новой установленной студии Android.
Проблема решена запуском Build->Clean Project
Примечание: Как говорят друзья в комментариях, это решение для флаттер-проекта
Работал у меня при создании приложения flutter и преобразовал его в androidx
У меня возникла эта проблема, когда я боролся с проектом флаттера. Чистил пока открывалась андроид часть.
во флаттере это решение
У меня возникла эта проблема после обновления android x в студии android. Чтобы исправить это, я перешел в File-> Open и открыл папку android в моем текущем проекте flutter. Затем я смог перейти в Build-> Clean Project, как это было предложено @Seymour Mammadli.
Надеюсь, это поможет кому-то с той же проблемой.
Я решил эту ошибку, включив multiDexEnabled в build.gradle модуля моего приложения:
defaultConfig {
...
...
...
multiDexEnabled true
}
Включение или отключение?
@ red-devil извини, это моя вина. Это включение, поэтому multiDexEnabled true (исправит опечатку).
Я столкнулся с проблемой при создании приложения Флаттер, и я решил ее, следуя официальное руководство: https://developer.android.com/studio/build/multidex
Вам просто необходимо:
0. (Android: Перейдите в Refactor> Migrate to AndroidX
(Если вы работаете в проекте Флаттер, чтобы перенести модуль, вам нужно перейти в Инструменты> Flutter> Открыть для редактирования в Android Studio
1. (Оба) Измените файл build.gradle на уровне модуля, чтобы включить multidex, и добавьте библиотеку multidex в качестве зависимости, как показано здесь:
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 28
multiDexEnabled true
}
...
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
2. (без флаттера) Если вы не переопределяете класс Application, отредактируйте файл манифеста, чтобы установить android: имя в теге <application> следующим образом:
<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
package = "com.example.myapp">
<application
android:name = "android.support.multidex.MultiDexApplication" >
...
</application>
</manifest>
2. (Флаттер) Если вы не переопределяете класс Application, отредактируйте файл манифеста, чтобы установить android: имя в теге <application> следующим образом:
<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
package = "com.example.myapp">
<application
android:name = ".App" >
...
</application>
</manifest>
3. (Флаттер) Создайте собственный класс в папке project / android / app / src / main / [java или kotlin folder] / [your / package / appName]
версия котлина: App.kt
package your.package.appName
import io.flutter.app.FlutterApplication
import android.content.Context
import androidx.multidex.MultiDex
class App : FlutterApplication() {
override fun attachBaseContext(base: Context) {
super.attachBaseContext(base)
MultiDex.install(this)
}
}
версия java: App.java
package your.package.appName;
import io.flutter.app.FlutterApplication;
import android.content.Context;
import androidx.multidex.MultiDex;
public class App extends FlutterApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
4. (Оба) Празднуйте, если вы это сделали !! : D
Для получения дополнительной информации ознакомьтесь с официальным руководством;)
https://developer.android.com/studio/build/multidex
Просто перейдите к инструменты> Flutter> Flutter clean в студии Android. Это решит проблему. (Если вы работаете с флаттером)
В моем случае (разработка плагина) эти шаги сработали:
cd example/android (example - это путь к проекту)./gradlew app:cleancd ..; flutter clean; flutter packages getперейдите в папку Android и запустите следующую команду
./gradlew clean
У меня такая же ошибка. Этот тип приложения не такой общий, как у нас, за исключением. В своей разработке приложения я использовал указанные ниже зависимости.
youtube_player_flutter: ^6.1.0+7
webview_flutter: ^0.3.20+2
поскольку youtube_player_flutter внутренне использует webview_flutter как одну из зависимостей. Я удалил зависимости webview_flutter, и все заработало.
Эта проблема также может возникнуть, если ваш buildDir одинаков для двух или более модулей в проекте.
это не правильно, он должен включить muti dex в градиенте
У меня была именно эта проблема, и я решил ее, изменив buildDir на уникальный для каждого модуля. Включение multi dex никак не повлияло. Я не говорю, что это решит проблему OP. Я просто добавил этот ответ на случай, если он поможет другим людям, которые столкнутся с этой веткой в будущем.
попробуйте добавить packageBuildConfig (false) в свой библиотечный модуль:
android{
...
packageBuildConfig(false)
}
Это должно быть сейчас, buildFeatures { buildConfig = false }, верно?
Измените имя вашего пакета, например:
Ваше текущее имя пакета:
com.example.appname
к:
com.example.appname.app
Я обнаружил ошибку при добавлении флаттера в существующий проект, сообщение указывает на то, что AndroidX вызывает проблему.
когда я изменяю AndroidX при загрузке flutter_module / pubspec.yaml
AndroidX:false
и попробуйте еще раз, это работает;
У вас есть модуль библиотеки с тем же именем пакета, что и у модуля приложения? Можете ли вы обновить свой вопрос с помощью файла build.gradle?