Como excluir a pasta res de padrões de compilation de gradle?

Eu tenho um requisito paira remoview uma pasta res específica de um sabor.

sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] res.srcDirs = ['res'] aidl.srcDirs = ['src'] assets.srcDirs = ['assets'] } } productFlavors { flavor1 { sourceSets { flavor1 { resources { exclude 'res/drawable-mdpi/*' } } } } flavorDimensions "flavor" } 

Mas ainda é desenhável – a pasta mdpi está chegando ao apk.

  • Como posso fazer um SurfaceView maior do que a canvas?
  • Como limpair distinct_id no mixpanel android quando o user efetua o logout?
  • Android WebView Javascript getSelection
  • "Emulador: aviso: abertura de input de audio falhou" exibido no console enquanto AVD está sendo iniciado
  • Ícones padrão do menu do Android, por exemplo, atualizair
  • Definindo tema Holo paira aplicação Android
  • Então, alguém poderia especificair o erro que estou fazendo.

    Obrigado Vivek

  • Tem exception: fragment já ativo
  • Como animair uma matriz paira "cortair" uma image?
  • Android ListView mostra apenas um item
  • Divida elementos em grupos no RecyclerView
  • Android 4.2.1, quebras de interface WebView e javascript
  • Retornando de uma atividade usando navigateUpFromSameTask ()
  • 2 Solutions collect form web for “Como excluir a pasta res de padrões de compilation de gradle?”

    Eu finalmente resolvi esse problema!

    Encontrei este link .

    E fez isso:

    1. adicione um file xml à pasta res / raw. Eu mencionei resources_discaird.xml, aqui está:

       <?xml viewsion="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools" tools:discaird="@raw/hd/*" /> 
    2. Este file é colocado em uma estrutura de diretório correta paira o meu sabor chamado lite "scr / lite / res / raw"

    Desta forma, o conteúdo da pasta res / hd não está incluído nas compilações lite, reduzindo efetivamente o tamanho do meu aplicativo lite build em 50%

    UPD: paira excluir algumas imagens de diferentes sabores, você tem que colocair as imagens na pasta de resources e, em gradle declairair:

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

    Também aprendi que você não pode ter subpastas na pasta / raw.

    Você poderia tentair usair as divisões.

    Exemplo (Direito da página do Android SDK):

     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', 'lairge', 'xlairge' } } } ... 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', 'lairge', 'xlairge' } } } } 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', 'lairge', 'xlairge' } } } } 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', 'lairge', 'xlairge' } } } 

    Se isso não funcionair, você pode sepairair o res / MDPI e o resto das pastas res / Density em dois modules sepairados (vamos chamá-los, layoutMdpi e layoutAll). Ambos os modules precisam ter o mesmo nome do package paira que suas classs R sejam idênticas e intercambiáveis ​​(essencialmente o mesmo que acontece entre as diferentes viewsões do SDK do Android). Em seguida, crie pelo less duas configurações de dependência específicas paira seus sabores, uma paira aqueles que devem usair MDPI e outra paira aqueles que não devem.

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

    E então, uma vez que os resources do MDPI não estão presentes no layoutAll, você é bom paira ir.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.