问题
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:
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.+
来源:https://stackoverflow.com/questions/48799655/ionic-3-after-install-admob-plugin-app-build-failed