如何从gradle build flavor中排除res文件夹? [英] How to exclude res folder from gradle build flavours?
问题描述
sourceSets {
main {
manifest.srcFile'AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res']
aidl.srcDirs = ['src']
assets.srcDirs = ['assets']
}
}
productFlavors {
flavor1 {
sourceSets {
flavor1 {
资源{
不包括'res / drawable-mdpi / *'
}
}
}
}
flavorDimensionsflavor
}
但是drawable-mdpi文件夹仍然会来到apk中。
所以任何人都可以指定我犯的错误。
感谢
Vivek
我发现开发eloper.android.com/studio/build/shrink-code.html#keep-resourcesrel =nofollow noreferrer>此链接。
以及做到这一点:
-
在res / raw文件夹中添加一个xml文件。我将它命名为resources_discard.xml,这里是:
<?xml version =1.0encoding =utf-8 >?;
< resources xmlns:tools =http://schemas.android.com/tools
工具:discard =@ raw / hd / */>
-
这个文件位于正确的目录结构中,称为lite(src / lite / res / raw)
add an xml file to res/raw folder. I named it resources_discard.xml, here is it:
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools" tools:discard="@raw/hd/*" />
this file is placed in the correct directory structure for my flavor called lite ("src/lite/res/raw")
通过这种方式,res / hd文件夹的内容不包含在精简版中,有效地减少我的精简版构建apk的大小50%更新:从不同的风格中排除一些图像,你必须把图像放在资产文件夹,并在gradle声明:
flavor {
aaptOptions {
ignoreAssetsPattern'/folder:*.jpg:*。 png'// use:as delimiter
}
}
我也学会了您无法在/ res / raw文件夹中创建子文件夹。
I have a requirement to remove a specific res folder from a flavour.
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"
}
But still drawable-mdpi folder is coming to the apk.
So could anyone please specify what mistake am I making.
Thanks Vivek
I finally solved this problem!
I have found this link.
And did this:
This way, contents of res/hd folder are not included in lite builds, effectively reducing my lite build apk size by 50%
Update: to exclude some images from different flavors, you have to put the images in the "assets" folder, and in gradle declare:
flavor {
aaptOptions {
ignoreAssetsPattern '/folder:*.jpg:*.png' //use : as delimiter
}
}
I also learned that you can't have subfolders in /res/raw folder.
这篇关于如何从gradle build flavor中排除res文件夹?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!