2017-04-04 11 views
2

問題文: ライブラリは開発環境でのみ使用しますが、リリース時には使用しません(アプリストアリリース)。 そして私はそのライブラリをリリースapkでもビルドしたくありません。Android:ライブラリをロードし、リリース用ではない開発ブランチ用にのみ使用

マイappraoch:だから

、私はこのような環境のセットアップ:

開発 -

  1. デバッグ
  2. リリース

ストア -

  1. デバッグ
  2. リリース -

    開発のために、このライブラリをロード
    debugCompile 'com.some.library' 
    

    - - デバッグストア>これは私が追加したのGradleで店舗

を再生するために行きます - デバッグ

その後、私は2つのアプリケーションクラス、

  1. ApplicationWithoutDebugLibraryを作成しているMultiDexApplicationを拡張 - ライブラリを初期化しないアプリケーションクラス。
  2. ApplicationWithDebugLibraryはApplicationWithoutDebugLibraryを拡張 - ライブラリ

を初期化そして、私は別の味のために別のアプリケーションファイルをロードするためのGradleで定義されているアプリケーションクラス。

productFlavors { 
      Development { 
       applicationId "xyzzzz" 
       manifestPlaceholders = [application:"com.xyz.ApplicationWithDebugLibrary"] 
      } 
      store { 
       applicationId "11111" 
       manifestPlaceholders = [application:"com.xyz.ApplicationWithoutDebugLibrary"] 
      } 
} 

とマニフェストに私はこれ書いた:デバッグのためにそれが正常に動作しているが、私は店-リリース/開発・リリースAPKを構築していたときに、ApplicationWithDebugLibraryをコンパイルすることはできませんので、

<application 
    android:name="${application}"... 

を.java、私はライブラリを使用しています。これはリリース風味のためにgradleファイルでコンパイルされていません。

Storeリリースのフレーバーや、開発環境でのみそのライブラリをロードできる代替ソリューションの読み込みを避ける方法はありますか?

答えて

2

デバッグではうまくいきますが、私がStore-Release/Development-Release apkをビルドするときに、ApplicationWithDebugLibraryをコンパイルできません。私は

ロジックによってリリースの味のためにGradleのファイルにコンパイルされていないライブラリを、使用していてJavaは、魔法のあなたのコードが使用するライブラリを削除する方法はありませんし、単にそこに欠けていると、まだ全てremainingsが正しくコンパイルされていますシンボル。だから、あなたのデバッグと同じAPIを使って、メソッド本体を持たない "ダミー"のライブラリを作る必要があります。代わりに、ライブラリーの依存関係を使用しないバージョンで、後で実動のためにスワップできるいくつかのコードでライブラリーをラップすることもできます。

コンパイルの設定は、メインアプリケーションをコンパイルするために使用されます。

アンドロイドのGradleプラグインは、それがあるビルドの種類のベースの依存関係の異なるバージョンでビルドすることができます。 その中のすべてがコンパイルクラスパスに追加され、最後のAPKにパッケージされた も追加されます。

  • コンパイル:メインアプリケーション
  • androidTestCompile:テストアプリケーション
  • debugCompile:デバッグビルドのタイプ
  • releaseCompile:リリースビルドの種類別の可能な構成は、に依存関係を追加 にあります。

ドキュメント:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Dependencies-Android-Libraries-and-Multi-project-setup

+0

のGradleのクラスと書き込みスクリプトの動的ロードについて同じことを何をすべきか。 私はそれが可能かどうかわからない、私は知っているだけ好奇心の多くの場所でそれについて読んできた。 – aamitarya

+0

コメントを再入力してください。私はあなたが本当に何を意味するかを知りません。 –

+0

私は、いくつかの条件に基づいてクラスをコンパイルするための動的クラスの読み込みまたは書き込みスクリプトをgradleで使用することができますか? – aamitarya

関連する問題