У меня есть приложение с 5 разными вкусами.Они используют очень большие ресурсы.Первоначально, те, которые были необходимы, были реплицированы в каждом аромате, но было так много избыточности, что я нашел, что лучше поместить их все в main и определить, какие ресурсы использует каждый аромат.
Скажем, есть 100 ресурсов, которыевместе равняется 1 ГБ.Я поместил файл 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 все равно остается тем же, что и аромат, который использует их все.Более того, я даже не могу собрать все это успешно, потому что у меня не хватает JM Tenure Space, хотя я установил в build.gradle
значение 32 ГБ, что на намного больше, чем размериз моих ресурсов, даже умноженных на количество ароматов.Я установил его, используя:
dexOptions {
javaMaxHeapSize "32g"
}
Я также вставил gradle.properties
org.gradle.jvmargs=-Xmx1536m -XX\:MaxHeapSize\=32g
Как (при сохранении ресурсов в main
) я могу предотвратить использование некоторых ресурсовупакованы в apk данного аромата и избегать максимизации кучи?(Между прочим, это прекрасно для создания полной версии ресурсов, или даже двух или трех - поэтому я знаю, что моя куча JM достаточно велика, чтобы обрабатывать все - она просто создает больше вариантов, чем та, которая становится проблемой, даже если ониВы не должны использовать более одного элемента res, потому что по какой-то причине они все равно включаются).