AOSP ninja build 已停止:子命令失败

Posted

技术标签:

【中文标题】AOSP ninja build 已停止:子命令失败【英文标题】:AOSP ninja build stopped: subcommand failed 【发布时间】:2019-11-16 00:33:41 【问题描述】:

我在尝试构建 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,但其他 SDK 发生以上 ninja 错误。

我试过了:

    堆大小高达 4g,6g 最大可交换至 16GB make installclean -j64 从 git 服务器重新克隆

但我遇到了同样的错误。这个错误点不一​​样。

有时会达到 2%、10%、51%、14%、15%.... 我不知道这是为什么以及发生了什么。

请给我建议。

【问题讨论】:

发布完整的错误日志。该问题在您发布的 sn-p 中不可见,它可能在此之前的某个地方。在 make 中使用 -jN 时,错误并不总是出现在最后一行 【参考方案1】:

为什么构建失败?

确保同步到好的分支,比如android-10.0.0_r25 并不是所有的分支都能成功构建。

我的笔记本是12G(8G+4G),我编译的时候发现,总是失败。 (java堆大小够大,4G,我设置了环境变量JAVA_TOOL_OPTIONS)

然后我检查了 out 目录下的详细日志。而且我找不到任何修复错误的线索。

查看我的错误日志:

失败:out/soong/.intermediates/frameworks/base/test-mock/android.test.mock.docs.system/android_common/android.test.mock.docs.system-stubs.srcjar out/soong/。中间件/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命令查看了ninja和java进程的内存使用情况,发现内存不足的原因,导致构建过程卡住了。

p>

特别是在构建//frameworks/base:system-api-stubs-docs Metalava的时候,在构建这个项目的时候,内存占用高达6~7GB,并且忍者杀死卡住的构建过程,因此构建失败。

所以,当出现错误时,我运行make -j1命令而不是默认make,只运行一个java和ninja进程,所以不需要那么多内存,编译成功。

你可以试试我的方法

出现错误时,可以运行make -j1命令代替默认命令make,这样只有一个构建进程在运行,不会耗尽内存,构建系统会继续构建剩下的项目发生错误。

通过导致失败的项目后,您可以按CTRL + C中断构建过程。请记住只需键入一次,然后等待所有 java 进程退出以避免引入意外错误。之后,再次键入不带 -j1 的 make 命令以使用 4 个线程再次构建左侧项目。

最后,你会看到:

构建成功完成 (10:48 (mm:ss))

【讨论】:

以上是关于AOSP ninja build 已停止:子命令失败的主要内容,如果未能解决你的问题,请参考以下文章

android Makefile 组织结构

我的C/C++语言学习进阶之旅解决使用ninja命令的时候报错:ninja: error: loading ‘build.ninja‘: 系统找不到指定的文件。

我的C/C++语言学习进阶之旅解决使用ninja命令的时候报错:ninja: error: loading ‘build.ninja‘: 系统找不到指定的文件。

我的C/C++语言学习进阶之旅解决使用ninja命令的时候报错:ninja: error: loading ‘build.ninja‘: 系统找不到指定的文件。

如何修复或定位“忍者:构建停止:子命令失败。”的问题?

AOSP 变得冗长