为每个资源文件夹构建Gradle

时间:2013-12-15 21:09:11

标签: android gradle build.gradle

是否可以配置Gradle来构建一些android apk文件,其中每个文件只使用一个资源类型文件夹?

我的意思是:

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

我知道我可以在构建之前删除某些文件夹,但如果我能“自动化”它会很好。

使用gradle“flavors”会有可能吗?

2 个答案:

答案 0 :(得分:9)

现在我们也可以使用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:启用密度分割机制
  • exclude:默认包含所有密度,您可以删除一些密度。
  • 包括:表明要包含哪些密度
  • reset():重置要包含在空字符串中的密度列表(这允许与include一起指示使用哪一个而不是忽略哪一个)
  • compatibleScreens:表示兼容屏幕列表。这将在清单中注入匹配的节点。这是可选的。

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

答案 1 :(得分:8)

尚不可能,但0.7.0将具有此功能。

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

0.7.0即将推出。

请注意,Play商店中的Multi APK支持不支持密度作为过滤器,它会在商店中显示为3个不同的应用程序,这不是您想要的。编辑:实际上,Multiple Apks支持这一点: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"
    }
  }
}