目录
今天在编译Android源代码时报出以下错误:
1.jack-server错误
FAILED: setup-jack-server
/bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.11.ALPHA.jar 2>&1 || (exit 0) ) && (JACK_SERVER_VM_ARGUMENTS=\"-Dfile.encoding=UTF-8 -XX:+TieredCompilation\" prebuilts/sdk/tools/jack-admin start-server 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update server prebuilts/sdk/tools/jack-server-4.11.ALPHA.jar 4.11.ALPHA 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-4.32.CANDIDATE.jar 4.32.CANDIDATE || exit 47 )"
Writing client settings in /home/helwens/.jack-settings
Installing jack server in "/home/helwens/.jack-server"
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore /home/helwens/.jack-server/server.jks -destkeystore /home/helwens/.jack-server/server.jks -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore /home/helwens/.jack-server/client.jks -destkeystore /home/helwens/.jack-server/client.jks -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
Launching Jack server java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-8 -XX:+TieredCompilation -cp /home/helwens/.jack-server/launcher.jar com.android.jack.launcher.ServerLauncher
Jack server failed to (re)start, try 'jack-diagnose' or see Jack server log
SSL error when connecting to the Jack server. Try 'jack-diagnose'
SSL error when connecting to the Jack server. Try 'jack-diagnose'
ninja: build stopped: subcommand failed.
08:34:10 ninja failed with: exit status 1
#### failed to build some targets (08:02 (mm:ss)) ####
之前编译可能没什么问题,但这次编译就突然出现问题了,根本原因是Android库偷偷地更新了一些代码导致的报错。
我们去到这个目录~/android-8.1.0_r1/prebuilts/sdk/tools,是源代码下面的一个prebuild tool目录,输入指令./jack-admin dump-report,就会出来如下Log
Creating report...
Dumping Jack server stacks...
Getting current user id...
Listing Jack server process...
Listing process using Jack server service port 8076...
Listing process using Jack server admin port 8077...
Collecting Jack client configuration...
Listing Jack server installation dir...
Collecting curl version...
Collecting curl connection info...
Collecting Jack server stats...
Collecting base64 info...
Zipping Jack server installation dir except keys and certificates...
Jack server report saved in 'jack-report.2378.zip'. Consider reviewing content before publishing.
其中我们最关注的是jack-report.2378.zip这个压缩包,打开压缩包里面的report.xxxx.txt文档,里面可以找到这次编译错误的根本原因:
$ JACK_EXTRA_CURL_OPTIONS=-v jack-admin list server
* Trying 127.0.0.1...
* TCP_NODELAY set
* connect to 127.0.0.1 port 8077 failed: 拒绝连接
* Failed to connect to localhost port 8077: 拒绝连接
* Closing connection 0
No Jack server running. Try 'jack-admin start-server'
我们可以绕过去不采用jack命令来编译,把原来的make命令变成
make ANDROID_COMPILE_WITH_JACK = false
其根本原因是谷歌做了一次JDK TLS相关的更新
Other notes: Disable TLS 1.0 and 1.1
TLS 1.0 and 1.1 are versions of the TLS protocol that are no longer considered secure and have been superseded by more secure and modern versions (TLS 1.2 and 1.3).
These versions have now been disabled by default. If you encounter issues, you can, at your own risk, re-enable the versions by removing “TLSv1” and/or “TLSv1.1” from the jdk.tls.disabledAlgorithms security property in the java.security configuration file.
See JDK-8202343
————————————————
版权声明:本文为CSDN博主「learnframework」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/learnframework/article/details/116861979
可以在进入这个文件/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security
sudo vi /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security
找到jdk.tls.disabledAlgorithms这一行(大概在第704行),之后把TLSv1, TLSv1.1删掉
之后:wq保存
再回到android源代码目录,执行make clean和make
感谢千里马的共享,详情可关注:
2.lexer.cpp 报错
FAILED: out/target/product/generic/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp
/bin/bash -c "prebuilts/misc/linux-x86/flex/flex-2.5.39 -oout/target/product/generic/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp bootable/recovery/edify/lexer.ll"
flex-2.5.39: loadlocale.c:130:_nl_intern_locale_data: ?? 'cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' ???
Aborted (core dumped)
ninja: build stopped: subcommand failed.
10:59:14 ninja failed with: exit status 1
build/core/main.mk:21: recipe for target 'run_soong_ui' failed
make: *** [run_soong_ui] Error 1
解决办法:在make之前执行下面操作 export LC_ALL=C