前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安卓编译 Jack server 错误问题解决办法

安卓编译 Jack server 错误问题解决办法

原创
作者头像
叉叉敌
发布2019-04-16 20:39:07
8.5K0
发布2019-04-16 20:39:07
举报
文章被收录于专栏:ChasaysChasays

本文的解决方法,基于Android O(8.0)。


问题 最近在编译安卓的时候,遇到Jack Server报错的问题:Failed to authenticate Jack server certificate. Try 'jack-diagnose'。

代码语言:javascript
复制
Jack server already installed in "/home/airenao/.jack-server"
Communication error with Jack server (60), try 'jack-diagnose' or see Jack server log
Failed to authenticate Jack server certificate. Try 'jack-diagnose'
Failed to authenticate Jack server certificate. Try 'jack-diagnose'
[  2% 40/1802] target Java: core-oj (out/target/common/obj/JAVA_LIBRARIES/core-oj_intermediates/classes)
ninja: build stopped: subcommand failed.
10:27:27 ninja failed with: exit status 1

什么是Jack Server

可以参考官方说明: https://source.android.com/setup/build/jack

Jack 是一种新型 Android 工具链,用于将 Java 源代码编译成 Android dex 字节码。 它取代了之前由 javac、ProGuard、jarjar 和 dx 等多种工具组成的 Android 工具链。 Jack 工具链具有以下优势完全开放源代码 它是在 AOSP 中提供的;并且欢迎用户贡献资源。 提高编译速度 Jack 提供以下具体支持来减少编译时间:dex 预处理、增量编译和 Jack 编译服务器。 支持压缩、混淆、重新打包和多 dex 处理 不再需要使用单独的软件包(如 ProGuard)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

解决方法

有2种解决办法,一种是编译的时候disable掉 jack server;还有一种就是 jack 在编译的时候,不是一个人在编译,导致是同一个 port,所以超时了,修改port即可。

1. Disable Server

这种简单粗暴,直接设置一个临时全局变量就可以了。

代码语言:javascript
复制
make *** ANDROID_FORCE_JACK_ENABLED=disabled -j32

2. 修改Port

先来看看Jack Server每个参数是什么意思。

代码语言:javascript
复制
SERVER=true 开启jack server.
SERVER_PORT_SERVICE=8072 设置TCP服务器端口号用来进行汇编编译
SERVER_PORT_ADMIN=8073 设置TCP服务器端口号用来管理员的编译管理
SERVER_COUNT=1 当前未使用,一般为默认
SERVER_NB_COMPILE=4 同时编译最大线程
SERVER_TIMEOUT=60 如果server没有在60s内没有反应,那么将会关掉此服务
SERVER_LOG=${SERVER_LOG:=$SERVER_DIR/jack-$SERVER_PORT_SERVICE.log} Log输出的位置
JACK_VM_COMMAND=${JACK_VM_COMMAND:=java} 启动JVM命令

把家目录下面的jack-setting文件和jack-server下config.properties文件里面的PORT修改为一致的即可。 下面是一个举例,修改较大的端口号,避免和其他的冲突。

代码语言:javascript
复制
#  这个文件是$HOME/.jack-settings

SERVER_PORT_SERVICE=28076 
SERVER_PORT_ADMIN=28077
代码语言:javascript
复制
# 这个文件是$HOME/.jack-server/config.properties

jack.server.service.port=28076
jack.server.admin.port=28077

小结

错误信息就在log里面,多关注console log。

参考

  1. 编译Android时禁用Jack Server
  2. Android 7.0 jack 多用户编译的坑处理

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Jack Server
  • 解决方法
    • 1. Disable Server
      • 2. 修改Port
      • 小结
      • 参考
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com