1
votes

When i build a android app in ionic 3 it was build. but after using admobFree or admobPro plugin every time build failed and i get this error.... (Due to post limit i am posting last few lines of error)


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 3m 22s
38 actionable tasks: 12 executed, 26 up-to-date
(node:11476) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: cmd: Command failed with exit code 1 Error output:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 3m 22s

[OK] Your app has been deployed.
     Did you know you can live-reload changes from your app with --livereload?


C:\Users\SHEKH RAIES\Raies-Ionic\test\file-upload\upload>
1
do you get any logs with ionic cordova build android --verbose or cordova build android --verbose?Suraj Rao
did you find any solution to this? i am struggling....itdoesntwork

1 Answers

1
votes

I am late. but hope this might help developers searching for an answer. I have gone through a lot to fix this issue. documentation didn't help. changing the configuration didn't do anything. removing and readding platform didn't help. etc

Here is how I fixed this.

open file project-folder/plugins/cordova-admob-sdk/plugin.xml

check this part

<platform name="android">
    <preference name="PLAY_SERVICES_VERSION" default="11.0"/>
    <framework src="com.google.android.gms:play-services-base:$PLAY_SERVICES_VERSION" />
    <framework src="com.google.android.gms:play-services-ads:$PLAY_SERVICES_VERSION" />
</platform>

see file project-folder/platforms/android/build.gradle ( this file changes each time when project is build)

this dependencies part

dependencies {
    implementation fileTree(dir: 'libs', include: '*.jar')
    // SUB-PROJECT DEPENDENCIES START
    implementation(project(path: "CordovaLib"))
    compile "com.android.support:appcompat-v7:23+"
    compile "com.google.android.gms:play-services-base:11.0"
    compile "com.google.android.gms:play-services-ads:11.0"
    compile "com.google.android.gms:play-services-analytics:+"
    compile "com.android.support:support-v4:27.+"
    // SUB-PROJECT DEPENDENCIES END
}

see another file project-folder/platforms/android/project.properties

target=android-26
android.library.reference.1=CordovaLib
cordova.system.library.1=com.android.support:appcompat-v7:23+
cordova.gradle.include.1=com.synconset.imagepicker/odi-ignorelinterrors.gradle
cordova.gradle.include.2=com.synconset.imagepicker/odi-androidtarget.gradle
cordova.system.library.2=com.google.android.gms:play-services-base:11.0
cordova.system.library.3=com.google.android.gms:play-services-ads:11.0
cordova.system.library.4=com.google.android.gms:play-services-analytics:+
cordova.gradle.include.3=phonegap-plugin-barcodescanner/odi-barcodescanner.gradle
cordova.system.library.5=com.android.support:support-v4:27.+

How i fixed

1 - changed file project-folder/plugins/cordova-admob-sdk/plugin.xml

from 11.0 to + so it would look like this

<platform name="android">
    <preference name="PLAY_SERVICES_VERSION" default="+"/>
    <framework src="com.google.android.gms:play-services-base:$PLAY_SERVICES_VERSION" />
    <framework src="com.google.android.gms:play-services-ads:$PLAY_SERVICES_VERSION" />
</platform>

2 - build (sudo ionic cordova build android)

that's it.

After building see file project-folder/platforms/android/build.gradle the dependencies part. looks like this

dependencies {
    implementation fileTree(dir: 'libs', include: '*.jar')
    // SUB-PROJECT DEPENDENCIES START
    implementation(project(path: "CordovaLib"))
    compile "com.android.support:appcompat-v7:23+"
    compile "com.google.android.gms:play-services-base:11.0"
    compile "com.google.android.gms:play-services-ads:11.0"
    compile "com.google.android.gms:play-services-analytics:+"
    compile "com.android.support:support-v4:27.+"
    // SUB-PROJECT DEPENDENCIES END
}

and project-folder/platforms/android/project.properties looks like this

target=android-26
android.library.reference.1=CordovaLib
cordova.system.library.1=com.android.support:appcompat-v7:23+
cordova.gradle.include.1=com.synconset.imagepicker/odi-ignorelinterrors.gradle
cordova.gradle.include.2=com.synconset.imagepicker/odi-androidtarget.gradle
cordova.system.library.2=com.google.android.gms:play-services-base:+
cordova.system.library.3=com.google.android.gms:play-services-ads:+
cordova.system.library.4=com.google.android.gms:play-services-analytics:+
cordova.gradle.include.3=phonegap-plugin-barcodescanner/odi-barcodescanner.gradle
cordova.system.library.5=com.android.support:support-v4:27.+