Gradleでandroid libraryはデフォルトでdebugモードをサポートしていません
1244 ワード
背景
最近、印刷ログのクラスをプロジェクトプロジェクト以外のmoduleに分離し、ログを印刷するときに現在debugモードなのかreleaseモードなのかを判断し、debugモードであればログを印刷する必要があるという問題がありました.プロジェクトプロジェクトでは、buildtypeを使用して2つの異なるBuild Variantを定義できます.定義は次のとおりです.
法のように砲制したいと思ってmoduleで同じ方法を採用すればいいのですが、android libraryではデフォルトでdebugモードはサポートされていません.詳細はこちらです.
解決策
紆余曲折を経たが、結局解決策を見つけた.
まず、android libraryのgradleに次の構成を追加します.
この行の構成の意味では、libraryはパッケージ化時にreleaseパッケージを打つだけでなく、debugパッケージを含む他のタイプのパッケージを打ち出します.
次に、プロジェクトエンジニアリングの依存に次の構成を追加します.
これにより、プロジェクトは異なるコンパイル環境に応じて対応するパッケージに依存します.以上の構成により、タイトルで述べた問題を解決できます.
ふみだめ
私はBuildConfigがまだ生成されていない前にコードで直接使用し、android studioの自動参照のため、直接次の参照を使用しました.
どうやって?DEBUGの値はすべてfalseで、后で何気なくこの点を発见して、まるで泣きたくて涙がありません.ローカルのどのBuildConfigに変更すれば解決できます.
最近、印刷ログのクラスをプロジェクトプロジェクト以外の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に変更すれば解決できます.