真に嘘かはわかりません。すみません。
広告をアプリ内に実装する際に、リリース後痛い経験をしたので共有も兼ねてTipsとして残せればと思います。
hardwareAccelerated
は明示的に指定しましょう
広告を実装するときには以下のような指定を <application>
ルートに求められていることが多いです。
android:hardwareAccelerated="true"
公式ドキュメントにはデフォルトTrueと書いてある
The default value is "true" if you've set either minSdkVersion or targetSdkVersion to "14" or higher; otherwise, it's "false".
Ref: https://developer.android.com/guide/topics/manifest/application-element.html#hwaccel
最近でいうと minSdkVersion
は 19
か 21
を指定することが多いと思うのでTrueがデフォルトだと認識してしまいますね。
hardwareAccelerated
の指定を消したら盛大にクラッシュが増えた
1週間でクラッシュフリーユーザー比率が5%は減るくらいこの2つのクラッシュで影響があったのでユーザーには申し訳なかったなと思います。。。
エラー内容でググっても全然情報出てなかったので大半は、
広告使ってるのにhardwareAcceleratedの指定消すなんてあり得ないでしょ
みたいな認識なんだろうなと思います。
hardwareAccelerated=true
の指定を戻したら盛大にクラッシュが減った
デフォルト値の意味ってなんなんでしょう、、、
OSや機種によって挙動が変わっていた
クラッシュの情報を追っていくと、
OSは7以上9未満
、メーカーも Xperia、Galaxy、AQUOS
に集中していることがわかりました。
端末によってクラッシュが起きる端末と起きない端末があるようでした。
まとめ
- 出来るだけ指定するべきものは省略しない
- チームのエンジニア全員がすぐに理解できるようなコードを意識して書いていきましょう
- Android全端末がデフォルト値を使ってくれると思わない
- 改めて機種依存の怖さを思い知らされました
- SDK導入のWikiをもっと信頼していこう
- 誰かが一生懸命調査してまとめてくれた成果物を最初から否定的な視点で見るのをやめる
- 常に情報が間違っていないか疑いを持つことは大事
- Wiki通りに
ちゃんと
実装していけばちゃんと動くのはあるある
以上です。