Failed to contact Jack server;No Jack Server running ;Android7.0(N)Jack 不支持多人同时在线编译。
背景
很多人在开发中,拉下一套新的代码会出现下列错误:
1.Failed to contact Jack server;
2.No Jack Server running;//jack server 被kill
该方法因为采用了Android7.0的Jack编译技术而无法支持多人在线同时进行编译。因此,在这种情况下遇到了端口占用的问题。
不明白Jack 编译的小伙伴可以看下我的这篇BLOG :
<>
解决方法
下面就给出详细的解决方案:
我们需要做的就是改端口。
通常情况下,在开发过程中使用Android 7.0(N)时可能会遇到三次编译错误。每次重新编译都会生成一个新的源代码文件,并指导深入探讨这个问题的细节。
初次编译出现错误时:该程序将在你的根目录中创建一个名为.jack-settings的配置文件。
(请注意,默认情况下系统会隐藏一些特殊文件。如果你无法在根目录中找到.jack-settings配置文件,请尝试将其显式地设置为可见。)
进入修改端口:
给出修改后的结果:

这里需要注意以下几点:
1:通常情况下,默认使用的两个端口为8076和8077;为了避免与其他系统冲突,建议选择不同的端口号码。
2:port的取值范围为... 0至65536之间。其中,在... 0至1024之间不推荐使用该范围内的数值;常见的是使用已被广泛认知的端口号。
改完了之后,你再去编译,这个时候又会报错;
在尝试第二次进行编译时会遇到问题:系统将在根目录下的指定路径上自动生成相应的配置文件,并提供修改后的配置信息以供后续操作。

注意:这里的修改要和上面一致。
完成了这一步,然后继续编译,又会报错:
No Jack Server running;
这个时候在.jack-server文件夹下执行 ls-al
查看文件的权限:
如图:

我们可以通过查看config.properties文件了解其权限设置,默认情况下该文件包括可读、可写、可执行三种权限。为了实现特定功能需求,请必须移除x权限这一项设置。至于具体原因jack-server日志中已经给出了详细说明:
config.properties must have permission rw ------- but have rwx------
执行 :chmod u-x config.properties

运行ls-al命令后就能看到权限已更改。(这个属于Linux权限管理知识。如果有不清楚的地方也可以询问。)
再编译,应该就可以成功了。
无论端口占用的问题采用什么解决办法就是这样子,请问您已经到了哪一步呢?可以直接按照下一步操作。
