LoginSignup
4

More than 3 years have passed since last update.

hardwareAcceleratedがデフォルトTrueは嘘

Last updated at Posted at 2019-04-02

真に嘘かはわかりません。すみません。

広告をアプリ内に実装する際に、リリース後痛い経験をしたので共有も兼ねて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

最近でいうと minSdkVersion1921 を指定することが多いと思うのでTrueがデフォルトだと認識してしまいますね。

hardwareAccelerated の指定を消したら盛大にクラッシュが増えた

上がってきたクラッシュは以下のような内容でした。
スクリーンショット 2019-04-02 19.12.45.png

1週間でクラッシュフリーユーザー比率が5%は減るくらいこの2つのクラッシュで影響があったのでユーザーには申し訳なかったなと思います。。。

エラー内容でググっても全然情報出てなかったので大半は、
広告使ってるのにhardwareAcceleratedの指定消すなんてあり得ないでしょ
みたいな認識なんだろうなと思います。

hardwareAccelerated=true の指定を戻したら盛大にクラッシュが減った

デフォルト値の意味ってなんなんでしょう、、、

OSや機種によって挙動が変わっていた

クラッシュの情報を追っていくと、
OSは7以上9未満、メーカーも Xperia、Galaxy、AQUOS に集中していることがわかりました。

端末によってクラッシュが起きる端末と起きない端末があるようでした。

まとめ

  • 出来るだけ指定するべきものは省略しない
    • チームのエンジニア全員がすぐに理解できるようなコードを意識して書いていきましょう
  • Android全端末がデフォルト値を使ってくれると思わない
    • 改めて機種依存の怖さを思い知らされました
  • SDK導入のWikiをもっと信頼していこう
    • 誰かが一生懸命調査してまとめてくれた成果物を最初から否定的な視点で見るのをやめる
    • 常に情報が間違っていないか疑いを持つことは大事
    • Wiki通りにちゃんと実装していけばちゃんと動くのはあるある

以上です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4