2016-08-31 11 views
0

私はAndroid用の小さなプロジェクトを持っており、いくつかのソースフォルダを追加しようとしています。gradleのプロセスからいくつかのフォルダとファイルを除外します

sourceSets { 
    main.java.srcDirs += '../../some-source-folder/' 
} 

私はまた私のIMLファイルでこれを追加しました::

<content url="file://$MODULE_DIR$/../../some-source-folder"> 
    <sourceFolder url="file://$MODULE_DIR$/../../some-source-folder" isTestSource="false" /> 
    <excludeFolder url="file://$MODULE_DIR$/../../some-source-folder/sub-folder" /> 
</content> 

問題は今、「私は本当に私のソースフォルダのサブフォルダの一部を除外する必要があること、であるこの作品のようなものを使用して some-source-folder ' 私のimlファイルでexcludeFolderを使用すると、サブフォルダがAndroid stdioに表示されないことを意味します。しかし、彼らはまだgradleを使ってコンパイルされます。

しかし、私のgradleファイルでは、コンパイルされないjavaファイルを含むサブフォルダのいくつかを除外することはできません!

sourceSets { 
    main.java.srcDirs += '../../some-source-folder/' 
    main { 
     java { 
      exclude ('../../some-source-folder/some-subfolder', '../../some-source-folder/another-subfolder') 

     } 
    } 
} 

は機能しません。

sourceSets { 
    main.java.srcDirs += '../../some-source-folder/' 
    exclude '../../some-source-folder/some-subfolder' 
    exclude '../../some-source-folder/another-subfolder' 
} 

も機能しません。

除外記号付きのものを補完クロージャに追加しようとすると、

compile { 
    exclude '../../some-source-folder/some-subfolder' 
} 

私はエラー

Gradleの同期を取得に失敗しました:(メソッドのコンパイルを見つけることができませんでした)引数の私は

excludes '...' 
を使用して似たエラーを取得し

を[_....構築]

または

exclude = ['....', '....', '....'] 

がエラーにつながる:

Gradleの同期に失敗しました:...引数について)(

の方法の除外を見つけることができませんでした Gradleの同期が失敗した

:メソッドの署名なし: java.util.LinkedHashSet.getAt()は引数型に適用されます:(java.util.ArrayList)values:

Androidのプロジェクトにソースフォルダを簡単に追加する方法はありますかスタジオといくつかのサブフォルダやソースファイルを除外しますか?

答えて

0

アンドロイドスタジオを使用しており、アンドロイドプロジェクトの構造が少し違うので、Build Variantsを使用して、製品フレーバーを設定する必要があります。ソースセットを構成できるForeachビルドバリアント。例えば

src/demoDebug/ (build variant source set) 
src/debug/ (build type source set) 
src/demo/ (product flavor source set) 
src/main/ (main source set) 

ここでそれを確認してください:https://developer.android.com/studio/build/build-variants.html#sourcesets

+0

感謝サンドロを。私はついにこれがうまくいかなかった理由を見つけました。私は、ソースディレクトリへの相対パスを使用してパスを除外する必要があります。残念ながら私はクラスをオーバーライドする必要があります。フレーバーは常に異なるパッケージ名を使用するので、私はフレーバーを使用できません。 –

関連する問題