1. 程式人生 > >編譯Android sdk出錯 解決方案

編譯Android sdk出錯 解決方案

用Android原始碼編譯sdk過程中出現以下錯誤:

flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data:Assertion 'cnt < (sizeof (nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.

Aborted (core dumped)

ninja: build stopped: subcommand failed.

02:59:16 ninja failed with:exit status 1

02:59:16 Unable to parse ninja entry

make: *** [run_soong_ui] Error 1

#### make failed to build some targets (14 seconds) ####

 最開始懷疑是因為JVM heap size太小而導致該錯誤. 

參考https://blog.csdn.net/dd864140130/article/details/51718187嘗試了以下兩種方法:

方法一: 
在編譯命令之前,修改prebuilts/sdk/tools/jack-admin檔案,找到檔案中的這一行: 
JACK_SERVER_COMMAND="java -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME" 
然後在該行新增-Xmx4096m,如: 
JACK_SERVER_COMMAND="java -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME" 
然後再執行time make -8j

方法二: 
在控制檯執行以下命令:

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"
out/host/linux-x86/bin/jack-admin kill-server
out/host/linux-x86/bin/jack-admin start-server
看網上也多數都是用以上兩種方法,但是我的問題都沒有解決,再次編譯仍然報錯。

最後嘗試了以下方法:

在build/envsetup.sh的最後一行新增一句話:

export LC_ALL=C

 問題得以解決。