issue closed

Android用ionic cordovaアプリのビルド時に「Unable to merge dex」エラー

投稿日:2019年6月2日 更新日:

事象

「cordova-plugin-admob-free」を追加した次のビルドで発生。他のケースでも発生する可能性があります。

C:\src\ionic\awesomeapp> ionic cordova run android

    (snip)

:app:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED

FAILURE: Build failed with an exception.

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

    (snip)

原因

gradleの依存が重複することが原因(?)
ライブラリバージョンアップによってビルドされたDexファイルのマージに齟齬が発生する(?)

解決

一旦「cordova clean android」して再度ビルドしてやることで解決。

C:\src\ionic\awesomeapp> cordova clean android
Android Studio project detected
ANDROID_HOME=C:\Users\naka\AppData\Local\Android\Sdk
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_60
Subproject Path: CordovaLib
Subproject Path: app

> Configure project :CordovaLib
publishNonDefault is deprecated and has no effect anymore. All variants are now published.

> Configure project :app
The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead.
        at build_7h86rjlnzeth6d2qwohcedk89.run(C:\src\ionic\awesomeapp\platforms\android\app\build.gradle:143)
Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead.


BUILD SUCCESSFUL in 3s
3 actionable tasks: 3 executed
C:\src\ionic\awesomeapp> cordova clean android

    (snip)

:app:cdvBuildDebug UP-TO-DATE

BUILD SUCCESSFUL in 1s
46 actionable tasks: 1 executed, 45 up-to-date
Built the following apk(s):
        C:\src\ionic\awesomeapp\platforms\android\app\build\outputs\apk\debug\app-debug.apk
ANDROID_HOME=C:\Users\naka\AppData\Local\Android\Sdk
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_60
No target specified, deploying to device 'FA7761800334'.
none
Skipping build...
Built the following apk(s):
        C:\src\ionic\awesomeapp\platforms\android\app\build\outputs\apk\debug\app-debug.apk
Using apk: C:\src\ionic\awesomeapp\platforms\android\app\build\outputs\apk\debug\app-debug.apk
Package name: jp.co.xyz
LAUNCH SUCCESS

まとめ

1年前にリリースしたアプリにAdmobを入れた際に発生し、先日の休日に次バージョン開発の為developビルドした際にまた発生しました。

関連ライブラリのバージョンが自動更新されたことによって上手くDexファイルが作れなくなった(?)模様です。幸い私の場合は1からビルドし直してやれば上手く行きました。

リリース後ほったらかしのアプリをちょっと弄ろうと思った時、こういうのが出ると出鼻をくじかれますね。リリース頻度の少ないアプリも月一くらいでCIビルドしておいた方が良さげです。

-issue closed
-

執筆者:

関連記事

Angular4.4のHTTP通信処理にタイムアウトを設定をすると「timeout is not a function」エラーが発生する

目次1 事象2 原因3 対処4 まとめ 事象 Angular4.3で追加されたHttpClientModuleに移行せず、HttpModuleを使い続けているアプリで、とある理由からpackage-l …

Typescript3.0以下の環境で発生する「Cannot find name ‘unknown’」に対処する

目次1 事象2 原因3 対処4 まとめ 事象 Typescript2.3.4を使っている息の長いWebシステムでnpm installをし直し、tscビルドし直したらトランスパイルエラーが発生。「un …

ローカルネットワーク内のHTTP通信が2回に1回交互にタイムアウトするようになった原因

目次1 事象2 調査3 解決4 その後 事象 ある日突然、オフィスのローカル開発環境でHTTP通信が異常なほど遅くなり、タイムアウトするようになりました。 その後F5でリロードすると普通にレスポンスが …

nvm-windows1.1.6でNode.jsを入れようとするとnpmコマンドのインストールがエラーになる

目次1 事象2 原因3 対処4 まとめ 事象 Win10、nvm-windows 1.1.6環境下でNode.js 10.16.0を入れようとした際に以下のエラーが発生。 C:\src\js\angu …

PuppeteerでGoogle検索すると「UnhandledPromiseRejectionWarning: Error: Node is either not visible or not an HTMLElement」

Puppeteerを新規インストールしてGoogle検索すると大概失敗、稀に成功します。 公式サンプルのGoogle Developers検索は動くのにGoogle検索は何でしっかり動かんの?となりま …

 

shingo.nakanishi
 

東京在勤、職歴2n年中年ITエンジニアです。まだ開発現場で頑張っています。

19歳(1996年)から書き始めたアウトプット用プライベートWeb日記数が5,000日を超え、残りの人生は発信をして行きたいと思い、令和元日からこのサイトを開始しました。勉強と試行錯誤をしながら、自分が経験したIT関連情報を投稿しています。

私と同じく、今後IT業界で生計を立てて行きたいと考えている方や、技術共有したいけど仲間が居なくて孤独、といった方と一緒に成長、知識共有して行けたら楽しいな、と思っています。