很多做android系统移植和开发的工程师,在编译android O 以上版本的系统的时候,会出现如下问题:
"Failed to contact Jack server..."或者"No Jack Server running..."这样的问题,
这种问题主要由于Android 7.0以上采用Jack编译,在同一台服务器上,不支持多人同时在线编译,出现端口占用的问题。
那么如何解决这个问题呢?
既然知道是不支持多人同时在线编译,端口占用的问题导致,那么肯定首先要修改端口。
首先在自己账户下根目录下找到一个隐藏文件,如果你直接ls看不到的话,可以使用ls -a -l 命令就能看到:
然后使用vi命令打开并修改该文件。
路上就是我修改后的,我改成了和其他人不会冲突的,特有的,6311和8533,
这里有个比较需要注意地方,端口号并不是我们随意去改,去指定的,是有范围限制的,
一般是在0-65536范围设置,0-1024最好不要用,因为可能已经被一些系统进程占用了,
改完之后退出保存即可。
到这里可以先编译一把,如果还报错的话,可以再做进一步修改。
这个时候就需要修改.jack-server目录下的config.properties文件
那么这个修改就要和我们前面设置的端口号要一致了。
修改完之后,保存,然后重新编译,这个时候可能还会报错,一般会报如下错误:
No Jack Server running;
这个时候在.jack-server文件夹下执行 ls-al,然后查看config.properties文件的权限,一般默认是rwx,
这个时候我们需要将x(可执行)的权限删除,至于为什么要删除,一般报错后,在这个目录下的logs中的日志会提示:
config.properties must have permission rw ------- but have rwx------
接下来我们就直接执行如下命令删除去X的权限即可。
chmod u-x config.properties
最后就变成如下这样就可以,这样重新在编译一次应该就OK了。