Gradle Build Error : Program type already present: com.google.unity.BuildConfig

Hi everyone
I recently updated my project to unity 2019.2.8f from unity 2018.2 and got this error when I tried to build for android. I believe it mentions that there is a duplicate which is bringing conflicts. I can’t find the duplicate file and am I hope someone can look through the log and give me a better idea where to look or may know a possible fix. Thanks

 CommandInvokationFailure: Gradle build failed. 
    C:/Program Files/Unity/Hub/Editor/2019.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/Tools\OpenJDK\Windows\bin\java.exe -classpath "C:\Program Files\Unity\Hub\Editor\2019.2.8f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-5.1.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease"
    
    stderr[
    D8: Program type already present: com.google.unity.BuildConfig
    java.lang.RuntimeException: java.lang.RuntimeException: 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.google.unity.BuildConfig
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    	at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:593)
    	at java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:677)
    	at java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:720)
    	at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:407)
    	at com.android.build.gradle.internal.transforms.DexMergerTransform.transform(DexMergerTransform.java:244)
    	at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
    	at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
    	at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
    	at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
    	at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:47)
    	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
    	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:284)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
    	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:273)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:258)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:67)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:145)
    	at org.gradle.internal.execution.impl.steps.ExecuteStep.execute(ExecuteStep.java:49)
    	at org.gradle.internal.execution.impl.steps.CancelExecutionStep.execute(CancelExecutionStep.java:34)
    	at org.gradle.internal.execution.impl.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:69)
    	at org.gradle.internal.execution.impl.steps.TimeoutStep.execute(TimeoutStep.java:49)
    	at org.gradle.internal.execution.impl.steps.CatchExceptionStep.execute(CatchExceptionStep.java:33)
    	at org.gradle.internal.execution.impl.steps.CreateOutputsStep.execute(CreateOutputsStep.java:50)
    	at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:43)
    	at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:29)
    	at org.gradle.internal.execution.impl.steps.CacheStep.executeWithoutCache(CacheStep.java:134)
    	at org.gradle.internal.execution.impl.steps.CacheStep.lambda$execute$3(CacheStep.java:83)
    	at java.util.Optional.orElseGet(Optional.java:267)
    	at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:82)
    	at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:36)
    	at org.gradle.internal.execution.impl.steps.PrepareCachingStep.execute(PrepareCachingStep.java:33)
    	at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:38)
    	at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:23)
    	at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
    	at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.lambda$execute$1(SkipUpToDateStep.java:91)
    	at java.util.Optional.orElseGet(Optional.java:267)
    	at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:91)
    	at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
    	at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:34)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:91)
    	at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
    	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
    	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:119)
    	at org.gradle.api.internal.tasks.execution.ResolvePreviousStateExecuter.execute(ResolvePreviousStateExecuter.java:43)
    	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
    	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:45)
    	at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:94)
    	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:56)
    	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:55)
    	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:67)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:315)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:305)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:101)
    	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49)
    	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
    	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    	at java.lang.Thread.run(Thread.java:748)
    Caused by: java.lang.RuntimeException: 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.google.unity.BuildConfig
    	at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1431)
    	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
    Caused by: 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.google.unity.BuildConfig
    	at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:131)
    	at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:118)
    	at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:102)
    	at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:37)
    	at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
    	... 4 more
    Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
    	at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:81)
    	at com.android.tools.r8.utils.ExceptionUtils.withD8CompilationHandler(ExceptionUtils.java:45)
    	at com.android.tools.r8.D8.run(D8.java:94)
    	at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:116)
    	... 7 more
    Caused by: com.android.tools.r8.utils.AbortException: Error: Program type already present: com.google.unity.BuildConfig
    	at com.android.tools.r8.utils.Reporter.failIfPendingErrors(Reporter.java:101)
    	at com.android.tools.r8.utils.Reporter.fatalError(Reporter.java:72)
    	at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:66)
    	... 10 more
    
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':transformDexArchiveWithDexMergerForRelease'.
    > com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: 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.google.unity.BuildConfig
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 26s
    ]
    stdout[
    > Task :preBuild UP-TO-DATE
    > Task :GoogleMobileAdsPlugin:preBuild UP-TO-DATE
    > Task :GoogleMobileAdsPlugin:preReleaseBuild UP-TO-DATE
    > Task :GoogleMobileAdsPlugin:checkReleaseManifest
    > Task :GoogleMobileAdsPlugin:processReleaseManifest
    > Task :MainLibProj:preBuild UP-TO-DATE
    > Task :MainLibProj:preReleaseBuild UP-TO-DATE
    > Task :MainLibProj:checkReleaseManifest
    > Task :MainLibProj:processReleaseManifest
    > Task :preReleaseBuild
    > Task :GoogleMobileAdsPlugin:compileReleaseAidl NO-SOURCE
    > Task :MainLibProj:compileReleaseAidl NO-SOURCE
    > Task :compileReleaseAidl NO-SOURCE
    > Task :GoogleMobileAdsPlugin:packageReleaseRenderscript NO-SOURCE
    > Task :MainLibProj:packageReleaseRenderscript NO-SOURCE
    > Task :compileReleaseRenderscript NO-SOURCE
    > Task :checkReleaseManifest
    > Task :generateReleaseBuildConfig
    > Task :prepareLintJar
    > Task :generateReleaseSources
    > Task :GoogleMobileAdsPlugin:compileReleaseRenderscript NO-SOURCE
    > Task :GoogleMobileAdsPlugin:generateReleaseBuildConfig
    > Task :GoogleMobileAdsPlugin:generateReleaseResValues
    > Task :GoogleMobileAdsPlugin:generateReleaseResources
    > Task :GoogleMobileAdsPlugin:packageReleaseResources
    > Task :GoogleMobileAdsPlugin:generateReleaseRFile
    > Task :GoogleMobileAdsPlugin:prepareLintJar
    > Task :GoogleMobileAdsPlugin:generateReleaseSources
    > Task :GoogleMobileAdsPlugin:javaPreCompileRelease
    > Task :GoogleMobileAdsPlugin:compileReleaseJavaWithJavac
    > Task :GoogleMobileAdsPlugin:bundleLibCompileRelease
    > Task :MainLibProj:compileReleaseRenderscript NO-SOURCE
    > Task :MainLibProj:generateReleaseBuildConfig
    > Task :MainLibProj:generateReleaseResValues
    > Task :MainLibProj:generateReleaseResources
    > Task :MainLibProj:packageReleaseResources
    > Task :MainLibProj:generateReleaseRFile
    > Task :MainLibProj:prepareLintJar
    > Task :MainLibProj:generateReleaseSources
    > Task :MainLibProj:javaPreCompileRelease
    > Task :MainLibProj:compileReleaseJavaWithJavac
    > Task :MainLibProj:bundleLibCompileRelease
    > Task :javaPreCompileRelease
    > Task :mainApkListPersistenceRelease
    > Task :generateReleaseResValues
    > Task :generateReleaseResources
    > Task :mergeReleaseResources
    > Task :createReleaseCompatibleScreenManifests
    > Task :processReleaseManifest
    > Task :processReleaseResources
    > Task :compileReleaseJavaWithJavac
    > Task :compileReleaseSources
    > Task :GoogleMobileAdsPlugin:prepareLintJarForPublish
    > Task :MainLibProj:prepareLintJarForPublish
    > Task :lintVitalRelease
    > Task :mergeReleaseShaders
    > Task :compileReleaseShaders
    > Task :generateReleaseAssets
    > Task :GoogleMobileAdsPlugin:mergeReleaseShaders
    > Task :GoogleMobileAdsPlugin:compileReleaseShaders
    > Task :GoogleMobileAdsPlugin:generateReleaseAssets
    > Task :GoogleMobileAdsPlugin:packageReleaseAssets
    > Task :MainLibProj:mergeReleaseShaders
    > Task :MainLibProj:compileReleaseShaders
    > Task :MainLibProj:generateReleaseAssets
    > Task :MainLibProj:packageReleaseAssets
    > Task :mergeReleaseAssets
    > Task :validateSigningRelease
    > Task :signingConfigWriterRelease
    > Task :checkReleaseDuplicateClasses
    > Task :GoogleMobileAdsPlugin:bundleLibRuntimeRelease
    > Task :MainLibProj:bundleLibRuntimeRelease
    > Task :transformClassesWithDexBuilderForRelease
    > Task :transformDexArchiveWithExternalLibsDexMergerForRelease
    
    > Task :transformDexArchiveWithDexMergerForRelease FAILED
    
    Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
    Use '--warning-mode all' to show the i<message truncated>

You have a duplicate class for com.google.unity.BuildConfig
This happened to us when we upgraded some of our ad mediation libs. What worked for us is removing the
Assets/Plugins/Android/GoogleMobileAdsPlugin/libs/unity-plugin-library.jar

file, which is no longer needed in newer mediation versions.

i also faced this error. what i did is, i changed minimum api level to marshmallow and also i checked development build in build setting. it worked for me.

Ran into this error when updating Google Admob Native Advanced. Had to trace back and delete all the files in the older Admob version. Lesson learned, delete all Google Admob files before adding new version.

Task :app:transformClassesWithMultidexlistForDebug FAILED
D8: Program type already present: com.reactnativecommunity.geolocation.BuildConfig

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ‘:app:transformClassesWithMultidexlistForDebug’.

com.android.build.api.transform.TransformException: Error while generating the main dex list:
Error while merging dex archives:
Learn how to resolve the issue at Add build dependencies  |  Android Studio  |  Android Developers.
Program type already present: com.reactnativecommunity.geolocation.BuildConfig

I ran into this similar problem. Resolve by removing duplicate implementation of same project in build.gradle dependencies.

implementation project(‘:react-native-community-geolocation’)