Program type already present: BuildConfig

AndroidAndroid Multidex

Android Problem Overview


I'm trying to generate a release build but im not able because of mutidex issues my project has all the multidex enabled and dependencies added

The error i'm receiving is :

Execution failed for task ':app:transformClassesWithMultidexlistForRelease

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

and aslo:

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

Android Solutions


Solution 1 - Android

You are getting this error because you a have library module which has the same package name as the app module.

The solution would be to change package name of your library module. You can follow the accepted answer in this SO which describes how to change the package name in android studio.

Solution 2 - Android

In my case It was happening when I try to run older project on new installed Android studio The problem solved by running Build->Clean Project

Note: As friends say on comments this is solution for a flutter project

Solution 3 - Android

I solved this error enabling multiDexEnabled in the build.gradle of my app's module:

defaultConfig { 
    ...
    ...
    ...

    multiDexEnabled true
}

Solution 4 - Android

Error: Program type already present: somemodule/BuildConfig

Cause

In my case I had a (hidden) circular dependency which Android Studio did not find:

  1. testutils/build.gradle uses implementation project(':somemodule')

  2. somemodule/build.gradle had `androidTestImplementation project(":testutils")

Solution

  • in my case the second dependency was not neccessary so I removed it

Solution 5 - Android

Just goto tools>Flutter>Flutter clean in android studio. It'll resolve the issue. (If you are working with flutter)

Solution 6 - Android

I had this problem after an android x upgrade in android studio. To fix this I went to File->Open and opened the android folder within my current flutter project. I was then able to go to Build->Clean Project as suggested by @Seymour Mammadli.

Hopefully this helps someone with the same issue.

Solution 7 - Android

I encountered the issue building a Flutter application and I resolved it following the official guide: https://developer.android.com/studio/build/multidex

You simply have to:

0. (Android: Go to Refactor > Migrate to AndroidX
(If you are on a Flutter project, to migrate the module, you have to go to Tools > Flutter > Open for Editing in Android Studio

  1. (Both) Modify the module-level build.gradle file to enable multidex and add the multidex library as a dependency, as shown here:

    android { defaultConfig { ... minSdkVersion 15 targetSdkVersion 28 multiDexEnabled true } ... }

    dependencies { implementation 'com.android.support:multidex:1.0.3' }

  2. (non-Flutter) If you do not override the Application class, edit your manifest file to set android:name in the <application> tag as follows:

    http://schemas.android.com/apk/res/android" package="com.example.myapp"> ...

  3. (Flutter) If you do not override the Application class, edit your manifest file to set android:name in the <application> tag as follows:

    http://schemas.android.com/apk/res/android" package="com.example.myapp"> ... 3.(Flutter) Create a custom class under project/android/app/src/main/[java or kotlin folder]/[your/package/appName]
    kotlin version: 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 version: 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. (Both) Celebrate if you did it!! :D

For more info, check out the official guide ;)
https://developer.android.com/studio/build/multidex

Solution 8 - Android

I got the same error. This type of application is not as generic as we do except. IN my application development I was using the below mentioned dependencies

  youtube_player_flutter: ^6.1.0+7
  webview_flutter: ^0.3.20+2

since youtube_player_flutter internally it makes use of webview_flutter as one of the dependencies. I removed the dependencies webview_flutter and it worked.

Solution 9 - Android

try add packageBuildConfig(false) in your library module:

android{
  ...
  packageBuildConfig(false)
}

Solution 10 - Android

Open with Android studio

  1. Build > Clean Project
  2. build > Build bundle (bundle / apk)

Build with android studio work for me. instead of with gradlew console

Solution 11 - Android

go to android folder and fire the below command

./gradlew clean

Solution 12 - Android

In my case (Developing a plugin), doing these steps worked:

  • cd example/android (example is the project path)
  • ./gradlew app:clean
  • cd ..; flutter clean; flutter packages get

Solution 13 - Android

This issue can also occur if your buildDir is the same for two or more modules in a project.

Solution 14 - Android

Change your package name, ex:

Your current package name:

com.example.appname

to:

com.example.appname.app

Solution 15 - Android

I meet the error when i adding flutter to existing project, the message indicates that AndroidX causes the problem.

when i modify the AndroidX at the bootom of flutter_module/pubspec.yaml

AndroidX:false

and try again , it works;

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionOussakiView Question on Stackoverflow
Solution 1 - AndroidSagarView Answer on Stackoverflow
Solution 2 - AndroidSeymur MammadliView Answer on Stackoverflow
Solution 3 - AndroidErik MedinaView Answer on Stackoverflow
Solution 4 - Androidhb0View Answer on Stackoverflow
Solution 5 - AndroidRishabh ShuklaView Answer on Stackoverflow
Solution 6 - AndroiddevknightView Answer on Stackoverflow
Solution 7 - AndroidMirko RaimoView Answer on Stackoverflow
Solution 8 - AndroidSachin MishraView Answer on Stackoverflow
Solution 9 - AndroidshubombView Answer on Stackoverflow
Solution 10 - AndroidsaputroandhiView Answer on Stackoverflow
Solution 11 - AndroidAmitView Answer on Stackoverflow
Solution 12 - AndroidMahdi-MalvView Answer on Stackoverflow
Solution 13 - AndroidGaztinView Answer on Stackoverflow
Solution 14 - AndroidRajitha UdayangaView Answer on Stackoverflow
Solution 15 - AndroidSteveYanView Answer on Stackoverflow