我有一个具有大约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项,因为无论如何出于某种原因它们都会被包含在内)。