在进行Android系统开发时,在liunx编译时发生问题,描述如下:
ninja: build stopped: subcommand failed.
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
向上查找发现问题点
Jack server already installed in "/home/**/.jack-server"
Communication error with Jack server (35), 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'
根据解释能看到建议查看 jack-diagnose或Jack server log
通过查看jack-diagnose并无什么信息
而Jack server log信息如下
17:35:29.750: INFO: com.android.jack.server.JackHttpServer: Loading config of jack server version: 1.3-a11 '1.3' (402300 704631c4e9bbfb4e8b052365140f79974b9f4cf4 by android-jack-team@google.com)
17:35:30.189: INFO: com.android.jack.server.JackHttpServer: Starting service connection server on /127.0.0.1:8076
17:35:31.892: INFO: com.android.jack.server.JackHttpServer: Starting admin connection on /127.0.0.1:8077
17:35:38.972: INFO: com.android.jack.server.JackHttpServer: Start timer
17:38:39.020: INFO: com.android.jack.server.JackHttpServer: Server mode changing from WAIT to IDLE
17:50:39.021: INFO: com.android.jack.server.JackHttpServer: Server mode changing from IDLE to DEEP_IDLE
19:35:39.200: INFO: com.android.jack.server.JackHttpServer: Server mode changing from DEEP_IDLE to SLEEP
23:35:39.041: INFO: com.android.jack.server.JackHttpServer: Server mode changing from SLEEP to SHUTDOWN
23:35:39.085: INFO: com.android.jack.server.JackHttpServer: Cancel timer
23:35:39.090: INFO: com.android.jack.server.JackHttpServer: Shutdowning service connection
23:35:39.091: INFO: com.android.jack.server.JackHttpServer: # max of concurrent compilations: 0
23:35:39.091: INFO: com.android.jack.server.JackHttpServer: # total of compilations: 0
23:35:39.092: INFO: com.android.jack.server.JackHttpServer: # max of concurrent forward compilations: 0
23:35:39.092: INFO: com.android.jack.server.JackHttpServer: # total of forward compilations: 0
23:35:39.267: INFO: com.android.jack.server.JackHttpServer: Done
23:35:39.267: INFO: com.android.jack.server.JackHttpServer: Shutdowning admin connection
23:35:39.322: INFO: com.android.jack.server.JackHttpServer: Done
截止到此处依旧不能看到问题,貌似一切正常
原因:jack不支持多用户同时编译,所以经常出现jack server报错的现象
解决方法:
编辑 $home/.jack,$home/.jack-settings 和 $home/.jack-server/config.properties,修改SERVER_PORT_SERVICE和SERVER_PORT_ADMIN的端口号,然后保存。
如果权限不对可以执行下面的命令修改权限:
chmod 600 .jack
chmod 600 .jack-settings
chmod 700 .jack-server
查看jack server是否启动
cd prebuilts/sdk/tools ./jack-admin start-server/stop-server
jack-admin server-log命令来查找log所在目录
测试结果:失败,应该不是遇到的问题
查看是否为权限问题:
运行失败时进入~/.jack-server/logs目录查看日志,如果出现权限问题修改以下两个文件权限:
sudo chmod 777 ~/.jack-settings
sudo chmod 777 ~/.jack-server/config.properties
正常情况默认端口没有问题的不需要修改、一般编译突然中上就会产生端口占用,执行命令杀掉进程解除端口占用或修改端口
解决方案:
1、系统源码目录下,执行以下命令:
./prebuilts/sdk/tools/jack-admin kill-server
2、如果执行jack-admin kill-server还存在端口占用问题,可修改端口试试:
vi ~/.jack-settings
SERVER_PORT_SERVICE=8076
SERVER_PORT_ADMIN=8077
vi ~/.jack-server/config.properties
jack.server.service.port=8076
jack.server.admin.port=8077
注意:service、admin端口,两个文件需要保持一至
解决方案:
sudo vi /etc/java-8-openjdk/security/java.security
查找”jdk.tls.disabledAlgorithms=“删除TLSv1, TLSv1.1,如下:
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA,
失败,在网上看到相似报错,但是经过各种测试后发现依旧无效
结论:使用./jack-admin kill-server,再开启 ./jack-admin start-server
在开发过程中,需要先对jack server是否安装,是否启动有概念,通过使用
./jack-admin start-server ,先进入项目目录
**@ubuntu:~/Project/MTK**/prebuilts/sdk/tools$ ./jack-admin start-server
Communication error with Jack server (35), try 'jack-diagnose' or see Jack server log
当开始报错时,可以确定没有启动,但是可以确定已经安装
网上有方案,要求执行./jack-admin stop-server,再开启 ./jack-admin start-server ,但是该方案失败。
然后发现有方案使用./jack-admin kill-server,再开启 ./jack-admin start-server,执行后成功
**@ubuntu:~/Project/MTK**/prebuilts/sdk/tools$ ./jack-admin kill-server
Killing background server
**@ubuntu:~/Project/MTK**/prebuilts/sdk/tools$ ./jack-admin start-server
Launching Jack server java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-jack-server/launcher.jar com.android.jack.launcher.ServerLauncher
**@ubuntu:~/Project/MTK**/prebuilts/sdk/tools$ ./jack-admin start-server
Server is already running
当打印“Server is already running”明显表面已经正常。
疑问:还是不理解为什么需要kill,而stop却不行
其实网上还有很多其他关于jack的问题及解决方案,但明显本次问题并不是出错,只是操作失误,导致被关闭
https://blog.csdn.net/longmin96/article/details/117782235