Islands in the byte stream

Technical notes by a software engineer

Androidでライブラリモジュールからアプリケーションのdebuggableフラグを参照する

特定のモジュールの BuldConfig.DEBUG はそのモジュールの開発中でしか使えません。しかし、ライブラリやメインのアプリケーションではないモジュールからこの値を参照したいこともあります。

そんなときは、ApplicationInfoからdebug flagを取得することができます。実行時デバッグフラグのデフォルト値としては使えるんじゃないでしょうか。

static boolean extractDebug(Context context) {
    return (context.getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) 
        == ApplicationInfo.FLAG_DEBUGGABLE;
}

なお定数ではないのでコンパイルタイムの最適化は効きません。本当に開発中のみ有効にしたいフラグは依然として BuildConfig.DEBUG を使う理由はあるかもしれません。