【问题标题】:Gradle builds for every resource folderGradle 为每个资源文件夹构建
【发布时间】:2014-01-03 04:33:12
【问题描述】:

是否可以将 Gradle 配置为构建几个 android apk 文件,每个文件只使用一个资源类型文件夹?

我的意思是:

  • build-hdpi.apk
  • build-mdpi.apk
  • build-xhdpi.apk

我知道我可以在构建之前简单地删除某些文件夹,但如果我能“自动”使它变得更好。

是否可以使用 gradle "flavors"?

【问题讨论】:

  • 你为什么需要它?
  • 我的应用程序包含大量照片,我想将其作为 3 个独立的应用程序分发,因此我可以减小文件大小。安装应用程序后按用户下载资产是不可能的,因为我希望它开箱即用。

标签: android gradle build.gradle


【解决方案1】:

现在我们也可以使用 api splits http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits

来自文档链接的示例:

android {
    ...
    splits {
        density {
        enable true
        exclude "ldpi", "tvdpi", "xxxhdpi"
       compatibleScreens 'small', 'normal', 'large', 'xlarge'
     }
}
  • enable:启用密度拆分机制
  • 排除:默认情况下包含所有密度,您可以删除一些密度。
  • include:指明要包含的密度
  • reset():将要包含的密度列表重置为空字符串(这允许与 include 一起指示使用哪个而不是忽略哪个)
  • compatibleScreens:表示兼容屏幕列表。这将在清单中注入一个匹配的节点。这是可选的。

AOSP 中的示例:https://android.googlesource.com/platform/tools/base/+/2101d189d85dd46f865726b9b7aa0012832a6d9c/build-system/tests/regular/densitySplit/build.gradle

【讨论】:

    【解决方案2】:

    目前还不可能,但是 0.7.0 会有这个功能。

    您需要创建 3 种产品风味(如果您想支持所有密度,则需要更多),并且您将拥有一个风味属性来限制在 apk 中打包的内容。

    0.7.0 即将推出。

    请注意,Play 商店中的多 APK 支持不支持密度作为过滤器,这将在商店中显示为 3 个不同的应用,这不是您想要的。 编辑:这实际上是由多个 Apk 支持的:http://developer.android.com/google/play/publishing/multiple-apks.html

    Edit2:现在 0.7.+ 已经发布,您可以执行以下操作:

    android {
      productFlavors {
        mdpi {
          resConfigs "mdpi", "nodpi"
        }
        hdpi {
          resConfigs "hdpi", "nodpi"
        }
        xhdpi {
          resConfigs "xhdpi", "nodpi"
        }
      }
    }
    

    【讨论】:

    • 你确定使用那个密度过滤器吗? developer.android.com/google/play/publishing/multiple-apks.html 说我可以使用:屏幕尺寸(以及,可选的,屏幕密度)
    • 我接受您的回答,但如果您(或我:))可以提供一个使用风味来限制文件夹的简单示例,那就太好了。几天后我会处理这个问题,所以我会尝试在这里发布一些结果。
    • @scana 我加了一个例子。
    • 不再适用于 21+ 的构建工具,请改用 apk 拆分(请参阅 Gauravs 答案)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    相关资源
    最近更新 更多