¿Cómo excluir la carpeta res de los desarrolladores de gradle build?

Tengo un requisito de quitar una carpeta específica del res de un 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" } 

Pero la carpeta drawable-mdpi sigue llegando al apk.

Así que alguien podría especificar el error que estoy cometiendo.

Gracias Vivek

Finalmente resuelto este problema!

He encontrado este enlace .

Y lo hizo:

  1. Agregue un archivo xml a la carpeta res / raw. Lo llamé resources_discard.xml, aquí está:

     <?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools" tools:discard="@raw/hd/*" /> 
  2. Este archivo se coloca en una estructura de directorio correcta para mi sabor llamado lite "scr / lite / res / raw"

De esta manera, el contenido de la carpeta res / hd no está incluido en las compilaciones de lite, reduciendo efectivamente mi tamaño lite build apk en un 50%

UPD: para excluir algunas imágenes de diferentes sabores, tienes que poner las imágenes en carpeta de activos, y en gradle declarar:

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

También aprendí que no se puede tener subcarpetas en carpeta / raw.

Usted podría intentar usar divisiones.

Ejemplo (Desde la página web de 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', 'large', 'xlarge' } } } 

Si eso no funciona, puede separar su res / MDPI y el resto de las carpetas Res / Density en dos módulos independientes (llamémoslos, layoutMdpi y layoutAll). Ambos módulos necesitan tener el mismo nombre de paquete para que sus clases R sean idénticas e intercambiables (esencialmente lo mismo que sucede entre diferentes versiones del androide SDK). A continuación, cree al menos dos configuraciones de dependencia específicas para sus sabores, una para los que deberían usar MDPI y otra para aquellos que no deberían hacerlo.

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

Y entonces, puesto que los recursos de MDPI no están presentes en layoutAll, es bueno ir.

  • React-native android assembleDebug log: Archivo de código fuente desconocido: warning: string 'catalyst_debugjs' no tiene traducción por defecto
  • Habilitar Soporte MultiDex en Android para lograr métodos de 65K + en Eclipse
  • ¿Cómo excluir archivos de recursos con Gradle y Android Studio?
  • AndroidStudio Gradle: cómo configurar buildTypes, y comprobar que buildType al construir?
  • Paquete de prueba para diferentes sabores en Android Studio
  • ¿Cómo saber cuál es la última versión de cualquier dependencia que incluimos en Gradle?
  • Referencia sin resolver: kotlinx - Kotlin 1-0-0-rc-1036
  • Utilizar Gradle para dividir bibliotecas externas en archivos separados dex para resolver el límite de métodos de Android Dalvik 64k
  • ¿Cómo empaquetar y vincular OpenCV binares y OpenCV Java SDK para Android Studio?
  • Error: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException:
  • Gradle: El nombre de archivo, el nombre de directorio o la sintaxis de etiquetas de volumen es incorrecto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.