ゆり&こちょの育児パパブログ

ゆり(8歳)&こちょ(4歳)2人の娘を持つ育児パパブログ

Cordova Android 7.0のアプリをビルド時にエラーが発生する様になってしまった

ここ最近作るアプリは、Cordova Android 7.1で開発していたので、気が付かなかった。
(むしろ、知らないままの方が良かったかも・・・)

 

f:id:summerplus64:20181027173603p:plain

 

以前作った、Cordova Android 7.0のアプリを少し改修したので、ビルドしてテストしようとしたら、ビルド時に、突如エラーが発生
大した改修もしていないのに・・・ハマりたくない!

 

 

Cordovaについて基本から学びたい方はこちらがおススメ★ 

[iOS/Android対応] HTML5 ハイブリッドアプリ開発[実践]入門 (Software Design plus)

[iOS/Android対応] HTML5 ハイブリッドアプリ開発[実践]入門 (Software Design plus)

 

 

さて、今回のエラー内容です。

 

〇 エラー内容

* What went wrong:
Execution failed for task ':app:transformDexWithDexForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.pro
cess.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.
DexException: Multiple dex files define Landroid/support/v4/accessibilityservice
/AccessibilityServiceInfoCompat;

* 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 2m 54s
(node:9256) [DEP0018] DeprecationWarning: Unhandled promise rejections are depre
cated. In the future, promise rejections that are not handled will terminate the
 Node.js process with a non-zero exit code.

私の解釈力では、、、

「transformDexWithDexForRelease」でエラーが発生した以外は、意味不明ですw

 

Cordovaを使ってアプリを開発している人であれば、経験したことがあるかもしれないが、以前はビルドが上手くいっていたのに、しばらく経ってビルドすると何故かエラーが発生するみたいな。
Android SDKのツールや環境とかが変わるのだろうか・・・)

 

過去の経験上、ビルドエラーの発生の際は、大体以下のプラグインが関与している。
↓こいつです。収入源なので外せません・・・


cordova-plugin-admobpro

 

とりあえず、原因を探るため、

まずは Admob Pro を削除して、ビルドしてみることに。

 

#Admob Proを削除
cordova platform rm cordova-plugin-admobpro

で、ビルドを実行!

 

BUILD FAITL

 

同じエラーが発生。あぁ、ハマる予感。

 

次に、Cordova Androidを7.0から7.1に変更してみることに。

 

# Cordova Android 7.0を削除
cordova platform rm android
# Cordova Android 7.1を追加
cordova platform add android@7.1.0

で、ビルドを実行!

 

BUILD SUCCESSFUL

 

お、通った。
何が変わったのか知らないけど、Cordova Android 7.0ではビルドエラーになる様なので、7.1 でいくことに。

さてさて、この状態で、Admob Pro を追加すればOKだろうか。

 

# Admob Proを追加
cordova plugin add https://github.com/floatinghotpot/cordova-admob-pro

で、ビルドを実行!

 

BUILD FAITL

 

こいつっ・・・期待を裏切る
以前は、Admob Proの導入バージョンを変えたりしながら、手さぐりでビルドが通る方法を探していたが、、、

最近は、Admob Free に移行中なので、このアプリも以前の記事に沿って変えることにした。

summerplus64.hatenablog.com

 

最後に Admob Freeを追加して終わりっと。

 

# Admob Free を追加
cordova plugin add cordova-plugin-admob-free --save

 

エラー発生!
API_KEY_FOR_ANDROID」 が無いと怒られた(泣
もう勘弁なんだけど。。。

どうも最近のバージョンで、API_KEY_FOR_ANDROIDを付けた状態で、インストールする形になったようなので、ご注意を。(過去記事も直さなきゃね・・・)

 

# Admob Free を追加(API_KEY_FOR_ANDROID 付き)
cordova plugin add cordova-plugin-admob-free --save --variable ADMOB_APP_ID="ca-【自分のアプリの広告ID】"

これで、無事 Admob Freeを追加完了。 さてさて、これで最後のビルドにしたいということで、 ビルド実行!

 

f:id:summerplus64:20181027180606p:plain

 

無事、成功しました。
毎度毎度、意味不明なエラーに振り回されます。

  

ちなみ、Android 7.0から7.1にあげると、

APIレベルは19以上になるので、サポート対象外のバージョンには、注意です。

例えば、(私も以前使っていた)Android 4.2とかは、サポート対象外になります。

 

 Cordovaでハイブリッドアプリを開発する際に、JQueryはまだまだ現役です。

学んで損なし!私は、こちらで勉強しました!