Gradleでandroid libraryはデフォルトでdebugモードをサポートしていません

1244 ワード

背景
最近、印刷ログのクラスをプロジェクトプロジェクト以外のmoduleに分離し、ログを印刷するときに現在debugモードなのかreleaseモードなのかを判断し、debugモードであればログを印刷する必要があるという問題がありました.プロジェクトプロジェクトでは、buildtypeを使用して2つの異なるBuild Variantを定義できます.定義は次のとおりです.
android {
    ...
    buildtypes {
        debug {
            ...
        }
        release {
            ...
        }
    }
    ...
}

法のように砲制したいと思ってmoduleで同じ方法を採用すればいいのですが、android libraryではデフォルトでdebugモードはサポートされていません.詳細はこちらです.
解決策
紆余曲折を経たが、結局解決策を見つけた.

  • まず、android libraryのgradleに次の構成を追加します.
    publishNonDefault true
    

    この行の構成の意味では、libraryはパッケージ化時にreleaseパッケージを打つだけでなく、debugパッケージを含む他のタイプのパッケージを打ち出します.

  • 次に、プロジェクトエンジニアリングの依存に次の構成を追加します.
    debugCompile project(path: ':library', configuration: 'debug')
    releaseCompile project(path: ':library', configuration: 'release')
    

    これにより、プロジェクトは異なるコンパイル環境に応じて対応するパッケージに依存します.以上の構成により、タイトルで述べた問題を解決できます.
    ふみだめ
    私はBuildConfigがまだ生成されていない前にコードで直接使用し、android studioの自動参照のため、直接次の参照を使用しました.
    import android.support.graphics.drawable.BuildConfig;
    

    どうやって?DEBUGの値はすべてfalseで、后で何気なくこの点を発见して、まるで泣きたくて涙がありません.ローカルのどのBuildConfigに変更すれば解決できます.