2017-08-21 11 views
1

グラデーションライブラリの2つの異なるソースセットを指定し、プロジェクトにソースセット固有の依存関係を追加しようとします。Gradle:ライブラリの2つのソースセットを指定してプロジェクトに依存関係を追加する方法

enter image description here

アイデアはこのような何かを行うことです。

ライブラリbuild.gradleファイル:プロジェクトAでは

apply plugin: 'com.android.library' 

android { 
    ... 
    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 

      java { 
       srcDir 'src' 
      } 
      res { 
       srcDir 'res' 
      } 
     } 

     exclude_fr_it{ 
      manifest.srcFile 'AndroidManifest.xml' 

      java { 
       srcDir 'src' 
      } 
      res { 
       srcDir 'res' 
       exclude 'res/values/values-fr' 
       exclude 'res/values/values-it' 
      } 
     } 
    } 
... 
} 
... 

が、私はメインのsourceSetを含める:

dependencies { 
    compile project(':explore_layout') 
} 

プロジェクトBでは、 eソースセットexclude_fr_it。

dependencies { 
    compile project(':explore_layout') library 'exclude_fr_it' 
} 

ドキュメントを理解しようとしました。しかし、私はこれはsourceSetsの質問に直接答えではありません...これはどのように行うことができるか

Question 1

Doc

Question 2

答えて

1

が表示されません。しかし、sourceSets機能をまったく使用する必要はありません。

カスタムアンドロイドライブラリにリソースのサブセットを含めるだけの場合は、アプリのbuild.gradleにコンフィグレーションブロックを使用して実装できます。 (実際には、 'main'と 'exclude_fr_it' sourceSetsの特別な構成ブロックは必要ありません)

これは 'resConfigs'プロパティのために可能です。

特に、ライブラリに3つの言語( 'en'、 'fr'、 'it')のリソース構成があるとします。

その後、ライブラリからすべての言語が含まれ、プロジェクトA、で、あなたは、単にbuild.gradleでこれを使用します。

dependencies { 
    compile project(':explore_layout') 
} 

しかし、カスタムライブラリのを除外したいプロジェクトB、中「FR」と「それは資源、あなたがこのようなリソースのサブセットのみが含まれるように設定クロージャ内「resConfigs」プロパティを使用します。

dependencies { 
    compile project(':explore_layout') { 
     android { 
      defaultConfig { 
       resConfigs 'en' 
      } 
     } 
    } 
} 
+0

は、あなたの答えをありがとうございました!私はあなたの解決策を試しましたが、これは私に別のエラーを与えます。 エラー:(99、0)Androidタスクが既に作成されています。 これはandroid.applicationVariants、 android.libraryVariantsまたはandroid.testVariantsを呼び出すときに発生します。 これらのメソッドが呼び出されると、 モデルの設定を続行できません。 https://stackoverflow.com/questions/29910720/android-studio-error-building-android-tasks-have-already-been-created – lukas

+0

https://stackoverflow.com/a/26801256/1797191 勤務先私。あなたは私に正しいことをGoogleに指示した!ありがとうございます – lukas

関連する問題