AndroidアプリをAdMobに対応しようとしたらAPIバージョンやらなにやらでハマりまくった件

f:id:PSYuki:20170425000519j:plain いやー。久しぶりに焦りました。 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の実装に取り掛かります。