如何从gradle构建风格中排除res文件夹?

viv*_*vek 12 android gradle build.gradle android-gradle-plugin

我需要从flavor中删除特定的res文件夹.

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"
}
Run Code Online (Sandbox Code Playgroud)

但仍然drawable-mdpi文件夹来到apk.

所以任何人都可以说明我犯了什么错误.

谢谢Vivek

lxk*_*vlk 8

我终于解决了这个问题!

我找到了这个链接.

这样做了:

  1. 将一个xml文件添加到res/raw文件夹.我把它命名为resources_discard.xml,这是它:

    <?xml version="1.0" encoding="utf-8"?>
    <resources xmlns:tools="http://schemas.android.com/tools"
    tools:discard="@raw/hd/*" />
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我的味道名为lite("src/lite/res/raw"),这个文件放在正确的目录结构中

这样,res/hd文件夹的内容不包含在lite版本中,有效地将我的lite build apk大小减少了50%

更新:要从不同的风格中排除一些图像,您必须将图像放在"assets"文件夹中,并以gradle声明:

    flavor {
        aaptOptions {
            ignoreAssetsPattern '/folder:*.jpg:*.png' //use : as delimiter 
        }
    }
Run Code Online (Sandbox Code Playgroud)

我还了解到你不能在/ res/raw文件夹中有子文件夹.