android - resConfigs 如何在 android (gradle) 中工作?

标签 android android-studio kotlin gradle build

缺乏关于 gradle 方法的正确文档 resConfigs让我问了这个问题。
官方文档:

  • this例如,google给出了一个具体的例子来说明如何使用它
    与语言。
  • this例如,谷歌混合语言和
    绘图
  • 我找不到任何类似 gradle doc 的 javadoc

  • 我的(大部分是错误的)理解:
    如果我在 resConfigs 前面指定了一些东西,只有那些包含在最终构建中,其他所有内容都不会 bundle 到 apk 中。

    安卓应用设置
    测试应用程序有
  • 多种语言(values-en , values-fr, ...)
  • 多个可绘制文件夹(drawable-xxhdpi、drawable-xxxhdpi、...)
  • 多个 android 版本 (values-v21 , values-v7, ...)
  • 多个最小宽度(sw800, sw1000, ...)
  • 多方位(港口、陆地)

  • 我的测试观察
    注意:我使用 android studios 的 apk 分析器推导出以下结果。在每次测试之前,都会在启用 proguard(shrink) 的情况下生成完全清理、重建和产品构建。

    测试 1:
    我只指定了语言 resConfigs="en", "fr" 结果 1:
    在apk中,
  • 所有语言都消失了,除了 en 和 fr
  • 所有其他资源都存在(drawables、dimens、sw、orientation ...)

  • 测试 2:
    我只指定了可绘制对象 resConfigs="xxhdpi" 结果 2:
    在apk中,
  • 所有语言都存在
  • 所有其他资源都存在(dimens、sw、orientation ...)
  • 除 xxhdpi 外,所有可绘制对象都消失了。 (所有其他可绘制文件夹都存在,但文件为 0 字节)

  • 测试 3:
    我指定了语言和可绘制 resConfigs="en","fr","xxhdpi" 结果 3:
    在apk中,
  • 所有语言都消失了,除了 en 和 fr
  • 所有其他资源都存在(dimens、sw、orientation ...)
  • 除 xxhdpi 外,所有可绘制对象都消失了。

  • 问题:
  • 当我只指定语言时 resConfigs="en", "fr" ,为什么其他资源被 bundle 到apk中(例如:drawables)
  • 同样,当我只指定 resConfigs="xxhdpi" , 为什么要 bundle 语言和其他资源
  • 如果 gradle 正在使用一些智能来确定要排除的内容和不排除的内容,是否存在属于同一类别的一组资源列表,是否有任何文档?
    例如
  • 语言是一个组,如果 gradle 找到至少一个语言标签,它会排除所有其他语言。否则,包括所有语言?
  • Drawable 是一个组,如果 gradle 找到至少一个 drawable 标签,它会排除所有其他的 drawable。否则,包括所有可绘制对象?


  • 相关问题:
  • resConfigs仅在应用程序级别 gradle 上为我工作。当我尝试在依赖模块上使用它时,它完全忽略了它。如何使其在依赖模块上工作。 (我试图整合 firebaseUI for auth )
  • resConfigs在开发的早期阶段,还是仅用于开发目的,而不用于产品设置?
  • 最佳答案

    这里有几件事要记住

  • resConfigs 与资源限定符组一起使用
  • 资源限定符分组在不同的桶中,如语言、dpi、平台版本等。

  • 当您向 resConfigs 提供资源限定符时,该存储桶中限定符的所有其他资源都将被删除。其他桶中的资源不受影响。
    请参阅以下链接了解所有可用的分组/存储桶。
    https://developer.android.com/guide/topics/resources/providing-resources#AlternativeResources
    希望这是有道理的。

    关于android - resConfigs 如何在 android (gradle) 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66661634/

    相关文章:

    java - 将 Android Room 数据库与 RXJava2 一起使用时找不到符号类 EmptyResultSetException

    android - 如何在android中声明arraylist来存储整数和字符串?

    kotlin - 根据传入的状态类类型构成 UI 操作的层次结构

    android - 如何使用 RxJava 和 Kotlin 从 List<Item> 获取 Arraylist 中的 Json 响应

    android - 如何在 kotlin 中的 customadpter 项目上实现 clicklistener?

    java - 暴力匹配是否适用于 FREAK 描述符?

    android - 从 Android Wear 屏幕启动应用程序

    android - appcompat-v7 : Android HelloWorld App Error

    Android Studio - Android 项目 View 丢失

    android-studio - 适用于 android studio 的 JSON 查看器插件?