android - 如何从 gradle build flavors 中排除 res 文件夹?

标签 android gradle android-gradle-plugin build.gradle

我需要从 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"
}

但 apk 中仍然有 drawable-mdpi 文件夹。

所以任何人都可以指出我犯了什么错误。

谢谢 维维克

最佳答案

我终于解决了这个问题!

我找到了 this link .

然后这样做:

  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/*" />
    
  2. 此文件放置在适合我的风格的正确目录结构中,称为 lite ("src/lite/res/raw")

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

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

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

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

关于android - 如何从 gradle build flavors 中排除 res 文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33263567/

相关文章:

android - 在 AutocompleteTextView 中显示所有项目而不写入文本

android - 如何检测群组短信对话

javascript - 三星 Galaxy S3 上的 Mobiscroll ParseInt 异常

java - 将 LibGDX 添加到现有 Gradle Java 项目

android - 使用 native 代码构建 Android 库时出现问题

android - RxJavaPlugins 错误找不到类 "com.google.devtools.build.android.desugar.runtime.ThrowableExtension"

android - Azure Blob 存储 - 在同一容器中复制 block Blob

java - Gradle bintrayUpload 找不到生成的 jar

gradle + kotlin-dsl : download file

Android Studio 1.1 Gradle 2.2.1 Gradle 版本 2.1 要求当前版本为 2.2.1