Help us understand the problem. What is going on with this article?

ProGuardとLogCatとAdMobが織りなす罠

More than 5 years have passed since last update.

アンドロイド開発においてログを吐く事は保守性が良くなるが、実際にこのコードを放置するとアプリケーションのパフォーマンスも落ちるし情報もだだ漏れ。

そのため存続のコードではガシガシログを吐いてリリースビルドでLogCatを吐かないようにProGuardで

-assumenosideeffects class android.util.Log { <methods>; }

とやるとログを吐かなくなる。

が、これが落とし穴だった。

これをするとAdMobが常にネットワークエラーだと言い出す。
これはSDKをデコンパイルしてみて見るとLog.isLoggableの戻り値を利用しているからだと解った。

すでに難読化されたクローズドソースなので分かりづらいクラス名だが、
com.google.ads.utilのパッケージ中のaとbというクラスで使われている。

-assumenosideeffects class android.util.Log {
public static *** v(...);
public static *** d(...);
public static *** i(...);
public static *** w(...);
public static *** e(...);
}

とすればモーマンタイ。

GeneralD
フリーランス。現在は傭兵エンジニア。某IQ集団の会員。コモンスキルは「スキルインストール」
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away