Сборка AOSP ninja остановлена: ошибка подкоманды

Я получил следующую ошибку, когда пытаюсь собрать A7.1.

[ 15% 1827/11495] target Package: framework-res ...bj/APPS/framework-res_intermediates/package.apk)
warning: string 'candidates_style' has no default translation.
warning: string 'candidates_style' is missing 41 required localizations: az_AZ be_BY bn_BD bs_BA en_AU en_CA en_GB en_IN en_NZ en_SG en_US eo_EU et_EE eu_ES gl_ES gu_IN hy_AM is_IS ka_GE kk_KZ km_KH kn_IN ky_KG lo_LA mk_MK ml_IN mn_MN mr_IN ms_MY my_MM ne_NP pa_IN si_LK sq_AL ta_IN te_IN ur_PK uz_UZ zh_CN zh_HK zh_TW
warning: string 'gsm_alphabet_default_charset' has no default translation.
warning: string 'gsm_alphabet_default_charset' is missing 90 required localizations: af_ZA am_ET ar_EG az_AZ be_BY bg_BG bn_BD bs_BA ca_ES cs_CZ da_DK de_AT de_CH de_DE de_LI el_GR en_AU en_CA en_GB en_IN en_NZ en_SG en_US eo_EU es_ES es_US et_EE eu_ES fa_IR fi_FI fr_BE fr_CA fr_CH fr_FR gl_ES gu_IN hi_IN hr_HR hu_HU hy_AM in_ID is_IS it_CH it_IT iw_IL ja_JP ka_GE kk_KZ km_KH kn_IN ky_KG lo_LA lt_LT lv_LV mk_MK ml_IN mn_MN mr_IN ms_MY my_MM nb_NO ne_NP nl_BE nl_NL pa_IN pl_PL pt_BR pt_PT ro_RO ru_RU si_LK sk_SK sl_SI sq_AL sr_RS sv_SE sw_TZ ta_IN te_IN th_TH tl_PH tr_TR uk_UA ur_PK uz_UZ vi_VN zh_CN zh_HK zh_TW zu_ZA
warning: string 'wfcSpnFormat' has no default translation.
warning: string 'wfcSpnFormat' is missing 41 required localizations: az_AZ be_BY bn_BD bs_BA en_AU en_CA en_GB en_IN en_NZ en_SG en_US eo_EU et_EE eu_ES gl_ES gu_IN hy_AM is_IS ka_GE kk_KZ km_KH kn_IN ky_KG lo_LA mk_MK ml_IN mn_MN mr_IN ms_MY my_MM ne_NP pa_IN si_LK sq_AL ta_IN te_IN ur_PK uz_UZ zh_CN zh_HK zh_TW
ninja: build stopped: subcommand failed.
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1

Но вот что действительно странно.

У меня также есть два каталога SDK, такие как /projects/SDK3288A71/ и /projects/SRC3288A71/, попробуйте собрать каждый SDK, и один SDK был успешно создан, но другие произошли выше ошибки ниндзя.

Я пытался:

  1. размер кучи до 4г,6г
  2. размер до свопа до 16GB
  3. сделать установку чистой -j64
  4. повторное клонирование с сервера git

но я получил ту же ошибку. Эта точка ошибки не то же самое.

Иногда доходило до 2%, 10%, 51%, 14%, 15%.... Не знаю, почему и что с этим случилось.

Пожалуйста, посоветуй мне.


person busybong    schedule 16.11.2019    source источник
comment
Выложите полный журнал ошибок. Проблема не видна в фрагменте, который вы разместили, вероятно, она была где-то раньше. Когда вы используете -jN в make, ошибки не всегда появляются в последней строке.   -  person Rick Sanchez    schedule 16.11.2019


Ответы (1)


почему создание не удается?

Обязательно выполните синхронизацию с хорошей веткой, например android-10.0.0_r25. Не все ветки могут быть успешно собраны.

Мой ноутбук 12G (8G + 4G), я обнаружил, что при компиляции он всегда терпит неудачу. (размер кучи java достаточно велик, это 4G, и я установил переменную среды JAVA_TOOL_OPTIONS)

и я проверяю подробный журнал в каталоге out. И я не могу найти никакой подсказки, чтобы исправить ошибку.

см. мои журналы ошибок:

FAILED: out/soong/.intermediates/frameworks/base/test-mock/android.test.mock.docs.system/android_common/android.test.mock.docs.system-stubs.srcjar out/soong/.intermediates/frameworks /base/test-mock/android.test.mock.docs.system/android_common/android.test.mock.docs.system_api.txt out/soong/.intermediates/frameworks/base/test-mock/android.test.mock .docs.system/android_common/android.test.mock.docs.system_removed.txt Подобрано _JAVA_OPTIONS: -Xmx4096m Убито

Я компилировал снова и снова, это терпело неудачу снова и снова, пока я не запустил команду top и не посмотрел использование памяти процессами ниндзя и java, и я нашел причину, по которой им не хватает памяти, что привело к зависанию процесса сборки.

особенно при сборке //frameworks/base:system-api-stubs-docs Metalava, при сборке этого проекта использование памяти достигает 6~7 ГБ, и ниндзя убивает застрявший процесс сборки, поэтому сборка терпит неудачу.

Итак, когда возникает ошибка, я запускаю команду make -j1 вместо make по умолчанию, запускается только один процесс java и ninja, поэтому не нужно так много памяти, он скомпилирован успешно.

Вы можете попробовать мои способы

когда возникает ошибка, вы можете запустить команду make -j1 вместо команды make по умолчанию, поэтому работает только один процесс сборки, он не исчерпает вашу память, система сборки продолжит сборку левых проектов при возникновении ошибки.

после прохождения проекта, вызвавшего сбой, вы можете нажать CTRL + C, чтобы прервать процесс сборки. помните, что просто введите один раз и дождитесь завершения всего процесса Java, чтобы избежать непредвиденных ошибок. после этого снова введите команду make без -j1, чтобы снова использовать 4 потока для сборки левых проектов.

наконец, вы увидите:

build completed successfully (10:48 (mm:ss))
person Kevin Ding    schedule 26.01.2020