编译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

 问题得以解决。

猜你喜欢

转载自blog.csdn.net/Dhane/article/details/85068344