AndroidアプリをAdMobに対応しようとしたらAPIバージョンやらなにやらでハマりまくった件
いやー。久しぶりに焦りました。 Android アプリを AdMobに対応しようと、Android Studio の Glade にAdMobの設定を追加してSyncしたらコンパイルは通らなくなるわ、メモリが足りなくなるわで大騒ぎ。結局、丸一日潰してしまいました。
このアプリはもともと Android 5.1(API 22)をターゲットに作っていたのですが、AdMobをSyncしたとたん、API 23を要求されるようになったのが事の発端です。
AdMobが悪いのか、Android StudioのGladeが悪いのか、もはや切り分けることも不可能になってしまいました。というかもう二度と追っかけませんが。。
やったことを整理しておくと、
まずはライブラリ群の更新。
compileSdkVersionを22 から 23へ
targetSdkVersionを22 から 23へ
appcompat-v7を 22.2.0 から 23.3.0へ
へ軒並みアップデート。
次に、バイナリサイズ肥大化(これは絶対AdMobのせい!)対策に、
multiDexEnabled true
com.android.support:multidex:1.0.0
として multiDex を有効化。
最初は圧縮すればいいんでしょ的なノリで、minifyEnabled を trueにしたら、JsoupがNull例外を吐いて動かなくなった…、これが今日のハマり第一弾でした。この原因を突き止めるのに約3時間ロス。
直ったと思ったら、今度はランタイムエラーで起動すると落ちる。。
ので、まずはビルドツールの更新。
buildToolsVersionを22.0.1 から 25.0.2へ
さらに、コンパイル時にメモリ不足で落ちる(これもAdMobのせい!)ので、
org.gradle.jvmargs=-Xmx1536M
を追加して対策。
アプリが起動しなくなったときには冷や汗ものでしたよ。
Jsoupは最新にすると動かなくなるのは調べないと。。ひとまず古いバージョンで凌ぎます。
何はともあれ復活してよかった!
明日こそはAdMobの実装に取り掛かります。