如何从gradle build flavor中排除res文件夹? [英] How to exclude res folder from gradle build flavours?

查看:982
本文介绍了如何从gradle build flavor中排除res文件夹?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  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>此链接



以及做到这一点:


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

     <?xml version =1.0encoding =utf-8 >?; 
    < resources xmlns:tools =http://schemas.android.com/tools
    工具:discard =@ raw / hd / */>


  2. 这个文件位于正确的目录结构中,称为lite(src / lite / res / raw)



  3. 通过这种方式,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:

    1. 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/*" />
      

    2. this file is placed in the correct directory structure for my flavor called lite ("src/lite/res/raw")

    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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆