如何阻止资源不必要地存储在产品风味中?

时间:2019-02-19 21:25:14

标签: android android-studio memory android-resources android-productflavors

我有一个具有大约5种不同口味的应用。他们使用一些非常大的资源。最初,需要的那些被复制到每个风味中,但是有太多的冗余,我发现最好将它们全部放在主要位置并定义每种风味使用哪些资源。

假设有100个资源总计等于1 GB。我已经在每个风味的keep.xml文件夹中放置了一个res文件,据认为该文件应避免将不需要的资源包含在该风味的构建中。例如:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
       tools:keep="@raw/x, @raw/y, @raw/z"
       tools:discard="@raw/a, @raw/b, ..."
/>

但是,即使某个风味仅使用一种资源,其apk大小最终仍与使用它们全部的风味相同。此外,即使我在build.gradle中将其设置为32 GB,这仍然 way ,我什至无法成功构建所有这些文件,因为我一直用尽JM Tenure Space。比我的资源规模还要多,甚至还可以乘以多种口味。我设置为:

dexOptions {
    javaMaxHeapSize "32g"
}

我也输入了gradle.properties

org.gradle.jvmargs=-Xmx1536m -XX\:MaxHeapSize\=32g

如何(在将资源保留在main中的同时)阻止某些资源打包在给定风味的apk中并避免堆满? (顺便说一句,建立完整资源的风味很好,甚至可以建立两个或三个风味-所以我知道我的JM堆足以应付所有事情--它正在建立比成为问题的风味更多的风味,即使它们“不应该使用多个res项,因为无论如何出于某种原因它们都会被包含在内)。

0 个答案:

没有答案