Причина: сервер JACK неисправен.
Следующее решает проблему нехватки оперативной памяти:
./prebuilts/sdk/tools/jack-admin kill-server
rm -rf ~/.jack*
export ANDROID_JACK_VM_ARGS="-Xmx4g -XX:+TieredCompilation -Dfile.encoding=UTF-8"
export SERVER_NB_COMPILE=2
export JACK_SERVER_VM_ARGUMENT=$ANDROID_JACK_VM_ARGS
./prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.*.ALPHA.jar
./prebuilts/sdk/tools/jack-admin start-server
Большое спасибо ЧЕЛОВЕКУ! проект. Измененный скрипт с изменениями из выпуска №2 и PR 5.
Что не сразу очевидно, так это то, что сборка не удалась не потому, что у МАШИНЫ закончилась память, а потому, что у JACK-сервера закончилась память. Действительно, сообщение об ошибке говорит...
Попробуйте увеличить размер кучи с помощью опции java '-Xmx'
(выделено мной).
Эта веб-страница по адресу http://www.2net.co.uk/blog/jack-server.html объясняет...
(...) давайте посмотрим на размер кучи по умолчанию на двух разных машинах. Размер кучи по умолчанию масштабируется в соответствии с общим объемом установленной памяти, игнорируя пространство подкачки. На машине 16 ГиБ это более 3 ГиБ:
$ java -XshowSettings 2>&1 | grep Heap
Max. Heap Size (Estimated): 3.47G
Но на машине 8 ГБ это меньше 2 ГБ:
$ java -XshowSettings 2>&1 | grep Heap
Max. Heap Size (Estimated): 1.71G
Оказывается, jack-серверу требуется около 3 ГиБ для создания типичной цели AOSP Nougat, поэтому он не работает, если на машине недостаточно оперативной памяти. Увеличение пространства подкачки не имеет значения.
Хорошо. Итак, с помощью приведенных выше команд я смог увеличить размер кучи до 4 ГБ и скомпилировать без ошибок.
В настоящее время...
Как применить параметр -j2, чтобы убедиться, что мой ЦП и ОЗУ не исчерпаны?
Страница по адресу (https://android.googlesource.com/platform/prebuilts/sdk/+/master/tools/README-jack-server.md) говорит
файл config.properties
Он содержит свойства конфигурации сервера Jack. Изменения этих настроек учитываются после перезапуска сервера. Ниже приводится описание со значениями по умолчанию:
jack.server.max-service=<number>
Максимальное количество одновременных задач Джека. По умолчанию 4.
(...)
Если ваш компьютер перестает отвечать на запросы во время компиляции:
Вы можете улучшить ситуацию, уменьшив количество одновременных компиляций jack, отредактировав свой $HOME/.jack-server/config.properties
и изменив jack.server.max-service на более низкое значение, а затем перезапустив сервер.
TL;DR:
jack.server.max-service=2
в $HOME/.jack-server/config.properties
и перезапустите сервер JACK.
person
Marc.2377
schedule
21.03.2018