2015-10-21 9 views
9

フレーバーから特定のresフォルダを削除する必要があります。gradle build flavorsからresフォルダを除外する方法は?

まだdrawable-mdpiフォルダがapkに届いています。

誰も私が間違いをしていることを明記してください。

おかげ のVivek

+1

あなたは 'sourceSets私が試した{ flavor1 { メイン{ リソース{ SRCDIR 'RES' は '** /描画可能MDPI/**' } } } 除外}' –

+0

を試してみてください同じですが動作しません。 – vivek

+0

@vivekこの問題をどうやって解決しましたか? – Fahim

答えて

4

私は最終的にこの問題を解決!

this linkが見つかりました。

そして、これでした:

  1. は、RES /生フォルダにXMLファイルを追加します。私はここにある、それはresources_discard.xmlの名前:

    <?xml version="1.0" encoding="utf-8"?> 
    <resources xmlns:tools="http://schemas.android.com/tools" 
    tools:discard="@raw/hd/*" /> 
    
  2. このファイルは「生SCR /ライト/ resを/」ライトと呼ばれる私の味のための正しいディレクトリ構造

これを内に配置されていますres/hdフォルダの内容はライトビルドに含まれていないので、自分のliteビルドapkサイズを50%小さくすることができます。

UPD:イメージを別のフレーバから除外するには、グラデーションの宣言:

flavor { 
     aaptOptions { 
      ignoreAssetsPattern '/folder:*.jpg:*.png' //use : as delimiter 
     } 
    } 

また、/ rawフォルダにサブフォルダがありません。

0

分割を使用してみることができます。 (右のAndroid SDKのWebページから)

例:

android { 
    ... 
    splits { 

    // Configures multiple APKs based on screen density. 
    density { 

     // Configures multiple APKs based on screen density. 
     enable true 

     // Specifies a list of screen densities Gradle should not create multiple APKs for. Here you should add all the densities except MDPI. 
     exclude "ldpi", "xxhdpi", "xxxhdpi" 

     // Specifies a list of compatible screen size settings for the manifest. 
     compatibleScreens 'small', 'normal', 'large', 'xlarge' 
    } 
    } 
} 

問題が解決しない場合は、お使いの解像度/ MDPI 2つの別々のモジュールへのres /密度フォルダの残りの部分(レッツ・コールを分けることができそれら、layoutMdpiおよびlayoutAll)。どちらのモジュールも同じパッケージ名を持つ必要があるので、Rクラスは同一で互換性があります(基本的にAndroid SDKの異なるバージョン間で同じです)。次に、少なくとも2つの特定の依存関係構成を作成します.1つはMDPIを使用する必要があり、もう1つはMDPIを使用する必要があるものです。

configurations { 
    mdpiCompile 
    allCompile 
} 

dependencies { 
    ... 
    mdpiCompile project(':layoutMdpi') 
    allCompile project(':layoutAll') 
} 

MDPIリソースがlayoutAllに存在しないので、あなたはいいです。

関連する問題