Bowyer Tech Blog

元Androidエンジニアによる技術ブログ

Androidアプリ

AdvertisingIdClient#getAdvertisingIdInfoがnullを返すのでアプリがクラッシュする

投稿日:2017年1月12日 更新日:

google play serviceを9.8.0にしてから一部の端末で起動直後にクラッシュすると報告がありました。クラッシュログによるとAdvertisingIdClient#getAdvertisingIdInfoがnullを返していることが分かりましたが、手元の端末では再現出来ず。ユーザーとやり取りしながら調査し、解決するまでのやり取りを備忘録として残しておきます。

google play developer consoleのクラッシュログ


クラッシュログを送信してもらう

Fabricを入れていましたが、起動直後のクラッシュログが取れなかったので、クラッシュログをGoogle Play Developer Consoleに送信してもらいました。以下のクラッシュログが発生していました。

 

stack overflowに同じクラッシュログが報告されていないか確認

stack overflowの投稿にもgoogle play serviceを9.8.0にしてからnullを返すと言っています。

I got an issue since I bumped the play-services version to v9.8.0. I notice that the method AdvertisingIdClient#getAdvertisingIdInfo sometimes returns null (i have not identified any pattern to reproduce this case yet).

AdvertisingIdClient#getAdvertisingIdInfo sometimes returns null since v9.8.0

回答の一部でもそう思うが、有益なリンクが見つけられない。Android Stuidoでデコンパイルしてnull返すところが分かるが、ドキュメントによるとその可能性はないと書いてありました。

I’m seeing this too, but can’t find any useful links about it. If you use Android Studio to decompile the getAdvertisingIdInfo method you can clearly see a path where it will return null but the docs don’t see to think that is possible

SDKで修正されていないか確認

私のアプリでは使用しているAdGenerationという広告のSDKでクラッシュしていたので、リリースノートを確認してみました。

ver 2.4.1.3リリース (2016/11/16)

  • アプリのGoogle Play Servicesが9.8でビルドした際にクラッシュするが場合あった点を修正

SDKのソースコードが公開されていないので、何を修正したか分からなかったので、SDKのコードをデコンパイルして確認しました。

修正前のコード(ADG-2.3.1.jar)

 

修正後のコード(ADG-2.4.2.jar)

NullPointerExceptionをキャッチするコードが追加されていました。

実機テスト

手元の実機での確認とれないので怖かったですが、ベータ版リリースし、ユーザーさんに確認してもらいました。

クラッシュが無くなったことを確認できたので、恐らくAdvertisingIdClient#getAdvertisingIdInfoがnullを返しているタイミングがあり、ADG-2.4.2.jarでの修正で問題ないことを判断し、アプリを全体公開しました。

まとめ

手元で確認とれなかったり、AdvertisingIdClient#getAdvertisingIdInfoがnull返す可能性があることに確証が持てなかったので、リリースをとても躊躇いました。公式ドキュメントでもnullチェックに関しては記述が無かったのでどこを見て良いか分からず。ベータリリースをしてユーザーにテストをしてもらわないといけない状況になったのでとても焦りました。

最終的にはAdvertisingIdClient#getAdvertisingIdInfoがnullを返すことが分かったので修正は問題ないことが分かりました。

この記事が同じ現象に合われている方に、少しでも役にたてばと思います。

-Androidアプリ

執筆者:

関連記事

データで見る3D TouchやApp Shortcutsの利用状況

iOS9から追加された3D Touchはリリースから1年以上経ったので、すでに実装されている方も多いでしょう。Android7.1より追加されたApp Shortcutsはまだ7.1のOSが一般ユーザ …

【デザイナー向け】基礎から始めるAndroidレイアウトXML入門

近年、デザイナーもAndroidアプリやiOSアプリのレイアウトを自分で修正する時代になってきました。ある企業では、Androidエンジニアが大枠のレイアウトを組んで、マージンや色の微調整などはデザイ …

Androidアプリのレビュー対策とその効果

AndroidアプリはGoogle Play Storeのレビューが積み上がり式なので、一度低評価なレビューがついてしまうと評価をあげることは難しいです。かと言って、インセンティブをバラまいて故意に高 …

僕が実践したGoogle Analyticsのトラッキングログ実装

エンジニアもGoogle Analyticsを使ってデータに向きあうべき理由で、エンジニアもデータに向き合ったほうがよいと紹介しました。 この記事では、私の公開している採点簿というAndroidアプリ …

How to make App Shortcuts