Android12 ソース コード コンパイル エラー ninja: build stop: サブコマンドが失敗しました。

1. 背景説明

仮想マシン: wsl 2.0 Ubuntu18.04
仮想マシン構成: 8G メモリ、1T ストレージ
ソフトウェア バージョン: 現在の Android システムの最高バージョン
エラー内容: 54% までコンパイルすると、ninja のコンパイルが中断され、ninja: ビルドが停止しました: サブコマンドが失敗しました。あ>

[ 54% 26841/49115] //prebuilts/rust:libtest rustc linux-x86/1.51.0/src/stdlibs/library/test/src/lib.rs
[ 54% 26842/49115] //frameworks/av/services/mediametrics:mediametrics clang++ main_mediametrics.cpp
[ 54% 26843/49115] Copy: out/target/product/G10/symbols/system/lib/libtest.dylib.so
[ 54% 26844/49115] //frameworks/av/media/libmediatranscoding:mediatranscoding_aidl_interface-ndk_platform clang++ android/media/TranscodingResultParcel.cpp [com.android.media]
[ 54% 26845/49115] //frameworks/compile/libbcc/bcinfo:libbcinfo header-abi-linker libbcinfo.so.lsdump
FAILED: out/soong/.intermediates/frameworks/compile/libbcc/bcinfo/libbcinfo/android_vendor.31_arm_armv7-a-neon_cortex-a7_shared/libbcinfo.so.lsdump
prebuilts/clang-tools/linux-x86/bin/header-abi-linker -o out/soong/.intermediates/frameworks/compile/libbcc/bcinfo/libbcinfo/android_vendor.31_arm_armv7-a-neon_cortex-a7_shared/libbcinfo.so.lsdump -so out/soong/.intermediates/frameworks/compile/libbcc/bcinfo/libbcinfo/android_vendor.31_arm_armv7-a-neon_cortex-a7_shared/libbcinfo.so -arch arm  -Iframeworks/compile/libbcc/bcinfo/include @out/soong/.intermediates/frameworks/compile/libbcc/bcinfo/libbcinfo/android_vendor.31_arm_armv7-a-neon_cortex-a7_shared/libbcinfo.so.lsdump.rsp 
Failed to parse JSON: * Line 1, Column 1
  Syntax error: value, object or array expected.

ReadDump failed
[ 54% 26846/49115] //prebuilts/gradle-plugin:metalava-gradle-plugin-deps for prebuilts [linux_glibc common]
[ 54% 26847/49115] //external/rust/crates/android_log-sys:libandroid_log_sys rustc src/lib.rs
[ 54% 26848/49115] //frameworks/base/media:media_permission-aidl-cpp clang-tidy android/media/permission/Identity.cpp
[ 54% 26849/49115] //frameworks/av/media/libmediametrics:mediametricsservice-aidl-cpp clang-tidy android/media/IMediaMetricsService.cpp
[ 54% 26850/49115] build out/target/product/G10/gen/META/lic_intermediates/webrtc_agc__agc.meta_lic
[ 54% 26851/49115] //frameworks/av/media/codec2/components/aac:libcodec2_soft_aacdec link libcodec2_soft_aacdec.so
[ 54% 26852/49115] //external/rust/crates/anyhow:libanyhow rustc src/lib.rs
[ 54% 26853/49115] //external/rust/crates/anyhow:libanyhow rustc src/lib.rs
[ 54% 26854/49115] build out/target/product/G10/gen/META/lic_intermediates/libbt-stack.meta_lic
[ 54% 26855/49115] build out/target/product/G10/gen/META/lic_intermediates/audio.a2dp.default.meta_lic
[ 54% 26856/49115] build out/target/product/G10/gen/META/lic_intermediates/libbt-audio-hal-interface.meta_lic
[ 54% 26857/49115] //frameworks/av/media/libmediatranscoding:mediatranscoding_aidl_interface-ndk_platform clang-tidy android/media/TranscodingSessionStats.cpp [com.android.media]
[ 54% 26858/49115] build out/target/product/G10/gen/META/lic_intermediates/avrcp-target-service.meta_lic
[ 54% 26859/49115] //frameworks/av/media/libmediatranscoding:mediatranscoding_aidl_interface-ndk_platform clang-tidy android/media/ITranscodingClientCallback.cpp [com.android.media]
[ 54% 26860/49115] //frameworks/av/media/libmediatranscoding:mediatranscoding_aidl_interface-ndk_platform clang-tidy android/media/TranscodingVideoTrackFormat.cpp [com.android.media]
[ 54% 26861/49115] //frameworks/av/media/libmediatranscoding:mediatranscoding_aidl_interface-ndk_platform clang-tidy android/media/IMediaTranscodingService.cpp [com.android.media]
[ 54% 26862/49115] //frameworks/av/media/libmediatranscoding:mediatranscoding_aidl_interface-ndk_platform clang-tidy android/media/ITranscodingClient.cpp [com.android.media]
[ 54% 26863/49115] //frameworks/av/media/libmediatranscoding:mediatranscoding_aidl_interface-ndk_platform clang-tidy android/media/TranscodingSessionParcel.cpp [com.android.media]
[ 54% 26864/49115] //frameworks/av/media/libmediatranscoding:mediatranscoding_aidl_interface-ndk_platform clang-tidy android/media/TranscodingRequestParcel.cpp [com.android.media]
[ 54% 26865/49115] //art/dexlayout:libart-dexlayout link libart-dexlayout.so [apex31]
[ 54% 26866/49115] //frameworks/av/media/codec2/components/hevc:libcodec2_soft_hevcenc link libcodec2_soft_hevcenc.so
[ 54% 26867/49115] //external/libvpx:libvpx link libvpx.so
[ 54% 26868/49115] //frameworks/av/media/codec2/components/gav1:libcodec2_soft_av1dec_gav1 link libcodec2_soft_av1dec_gav1.so
[ 54% 26869/49115] //external/libvpx:libvpx link libvpx.so
[ 54% 26870/49115] //system/logging/logd:logd link logd
ninja: build stopped: subcommand failed.
19:21:50 ninja failed with: exit status 1

[0;31m#### failed to build some targets (09:08 (mm:ss)) ####[00m


#### failed to exec [make droid dist BUILD_RTK_STYLE_IMAGE=true DIST_DIR=/home/daqiang_ni/samba/airplay75p/vendor/realtek/common/kernel/system/tmp/dist/android] (09:08 (mm:ss)) ####
tcl ret_tclbuild = 1

#### failed to exec [trom_build] (22:50 (mm:ss)) ####

2. プランを試す

がエラーを報告した後、複数の増分コンパイルを試しましたが、常に同じエラー内容で 54% のエラーが報告されました。
同期が完了していないのではないかと思われるので、同期をリポジトリすると成功のメッセージが表示されます。再度コンパイルすると、やはりエラーが発生します。
他の同僚は、コンパイルは成功したと言いました。さまざまなコンパイル環境を考慮して、VMWare 仮想マシン環境を使用してコンパイルしましたが、97% が同じエラーを報告しました。
コンパイル環境をクリアしてからコンパイルしようと make clean,rm -rf out/ 試みましたが、それでもエラーが発生しました。
情報によると、コンパイル中に Linux のメモリ不足によりコンパイルが中断されたため、Wsl2 で VHD を 10G まで拡張しましたが (方法は以下の通り)、やはり同じエラーが報告されました。
wsl2 構成ファイルを追加します
.wslconfig ファイルを C:\Users\userName パスに追加します
.wslconfig

[wsl2]
memory=10GB
processors=8

.wslconfig の内容は上記の通り、メモリ構成は 10GB、プロセッサは 8 コアまたは 16 スレッド
Ubuntu18.04 を再起動し、メモリのステータスを確認します。次のように変更されています。 10GB

$ free memory -h
              total        used        free      shared  buff/cache   available
Mem:           9.7G        2.6G        1.8G         36K        5.3G        6.9G
Swap:          3.0G         33M        3.0G

3. 問題の分析と処理

以下のコマンドを使用して、コンパイル中に Linux のメモリ使用量を 1 秒間隔で継続的に出力します。エラーが発生した場合、メモリは約 110MB しかありません。基本的には、コンパイル中にシステム メモリが不足してコンパイルが中断されたと判断できます。

$watch -d -n 1 free memory -h
Every 1.0s: free memory -h                                                                                                                                                                                  gd08575: Tue Aug  2 09:41:24 2022
              total        used        free      shared  buff/cache   available
Mem:           9.7G        2.9G        912M         36K        5.9G        6.6G
Swap:          3.0G         37M        3.0G

#またはコマンドを使用します

$ while true;do free memory -h;sleep 1;done
              total        used        free      shared  buff/cache   available
Mem:           9.7G        3.5G        4.1G         36K        2.1G        6.0G
Swap:          3.0G         41M        3.0G
              total        used        free      shared  buff/cache   available
Mem:           9.7G        3.3G        4.2G         36K        2.2G        6.1G
Swap:          3.0G         41M        3.0G
...

エラーが報告されると、メモリがチェックされます。使用可能なメモリは約 4GB 以下です。htop コマンドを使用して Linux プロセスをチェックすると、まだ多くのコンパイル プロセスが実行されていることがわかります。そのため、wsl2 を再起動してメモリを解放し、再度コンパイルします。

#Ubuntu18.04LTS を閉じた後、管理者権限で WindowsPowerShell を開き、wsl を再起動します
$wsl --shutdown

Ubuntu18.05LTS を入力してメモリの状態を確認し、9GB が利用可能です。Android の増分コンパイルをもう一度試してみると、コンパイルは成功しました。

参考研究

おすすめ

転載: blog.csdn.net/weixin_43233219/article/details/133900394