Ubuntu版本 16.04 编译Android 11 无法通过

FAILED: out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/platformprotos.jar
rm -rf "out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/classes" "out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/anno" "out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/srcjars" && mkdir -p "out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/classes" "out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/anno" "out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/srcjars" && out/soong/host/linux-x86/bin/zipsync -d out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/srcjars -l out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/srcjars/list -f "*.java" out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/gen/proto/proto0.srcjar out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/gen/proto/proto1.srcjar && (if [ -s out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/srcjars/list ] || [ -s out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/platformprotos.jar.rsp ] ; then out/soong/host/linux-x86/bin/soong_javac_wrapper prebuilts/jdk/jdk11/linux-x86/bin/javac -J-Xmx2048M -J-XX:OnError="cat hs_err_pid%p.log" -J-XX:CICompilerCount=6 -J-XX:+UseDynamicNumberOfGCThreads -Xmaxerrs 9999999 -encoding UTF-8 -sourcepath "" -g -XDskipDuplicateBridges=true -XDstringConcat=inline -proc:none -g:source,lines -Xlint:-dep-ann -classpath out/soong/.intermediates/external/protobuf/libprotobuf-java-full/linux_glibc_common/javac/libprotobuf-java-full.jar -source 1.9 -target 1.9 -d out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/classes -s out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/anno @out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/platformprotos.jar.rsp @out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/srcjars/list ; fi ) && out/soong/host/linux-x86/bin/soong_zip -jar -o out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/platformprotos.jar -C out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/classes -D out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/classes && rm -rf "out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/srcjars"
out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/srcjars/com/android/os/AtomsProto.java:5363: error: not a statement
bluetoothLinkLayerConneed) pushed_).toBuilder();
^
out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/srcjars/com/android/os/AtomsProto.java:5363: error: ';' expected
bluetoothLinkLayerConneed) pushed_).toBuilder();
^
out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/srcjars/com/android/os/AtomsProto.java:5363: error: not a statement
bluetoothLinkLayerConneed) pushed_).toBuilder();
^
out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/srcjars/com/android/os/AtomsProto.java:5363: error: ';' expected
bluetoothLinkLayerConneed) pushed_).toBuilder();
^
out/soong/.intermediates/frameworks/base/platformprotos/linux_glibc_common/javac/srcjars/com/android/os/AtomsProto.java:5374: error: illegal start of type
case 34: {

Android里面是没有这个AtomsProto.java文件的 应该是服务器编译环境问题

原因:执行frameworks/base/cmds/statsd/src/atoms.proto的解析生成AtomsProto.java文件后,android的编译系统会对这个java文件进行压缩,用的是android编译环境里面的soong_zip工具。soong_zip在多核处理下估计是有bug,会导致文本错位,AtomsProto.java由于代码很多因此很容易出现压缩错误问题,后面就编译失败了。
修复方法:build/soong/java/proto.go里面,soong_zip压缩指令里面添加参数,强制不使用多核:

--- a/java/proto.go
+++ b/java/proto.go
@@ -49,6 +49,7 @@ func genProto(ctx android.ModuleContext, protoFiles android.Paths, flags android
         // into a srcjar.
         rule.Command().
             BuiltTool(ctx, "soong_zip").
+            Flag("-parallel=1").
             Flag("-jar").
             Flag("-write_if_changed").
             FlagWithOutput("-o ", srcJarFile).

一两句说不清,我详细一步一步教你吧

和protoc版本有关系么

求问大佬们,怎么解决的