[Android开发] Android编译Jack Server问题汇总

目录

Jack介绍

编译常见问题及解决方法

端口冲突

文件权限问题

SSL报错

.jack-server访问问题


Jack介绍

官方介绍https://source.android.com/docs/setup/create/jack?hl=zh-cn

简而言之,Jack 是一种 Android 工具链,用于将 Java 源代码编译成 Android dex 字节码。Android老的版本6.0~8.1在编译时会使用Jack,使用 Jack 时,它会在您的计算机上启动一个本地 Jack 编译服务器,用于实现内在加速和控制并行Jack编译数量,该服务器使用localhost(127.0.0.1)接口上的2个TCP端口,且空闲一段时间后会自动关闭。

Jack Server交互命令

使用prebuilts/sdk/tools/jack-admin可执行如下交互命令

jack-admin start-server
jack-admin kill-server
jack-admin list-server
jack-admin uninstall-server
jack-admin install-server jack-launcher.jar  jack-server-4.8.ALPHA.jar
jack-admin dump-report
jack-admin server-log  查找log所在目录

编译常见问题及解决方法

端口冲突

编译提示

Communication error with Jack server (58), try 'jack-diagnose' or see Jack server log
Failed to contact Jack server: Problem reading /root/.jack-server/client.pem. Try 'jack-diagnose'

jack服务器使用localhost(127.0.0.1)接口上的2个TCP端口,需确保没有被其他应用占用,如下2个文件,且2个文件中端口号应对应一致

$HOME/.jack-settings文件

SERVER_PORT_SERVICE=8078
SERVER_PORT_ADMIN=8079

$HOME/.jack-server/config.properties 文件

jack.server.service.port=8078
jack.server.admin.port=8079

文件权限问题

编译提示No Jack server running. Try 'jack-admin start-server'

查看$HOME/.jack-server/logs/中的log:

com.android.jack.server.api.v01.ServerException: './config.properties' musthave permission rw------- but have rwx------

Caused by: java.io.IOException: './config.properties' must have permissionrw------- but have rwx------

... 2 more

发现是配置文件的权限不对造成的,把文件$HOME/.jack-server/config.properties的权限由rwx改为rw即可解决问题。
 

SSL报错

编译提示

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'

解决方法:

在/etc/java-8-openjdk/security/java.security中取消TLSv1, TLSv1.1 禁用

修改前

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
      DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
      include jdk.disabled.namedCurves

修改后

jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \
      DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
      include jdk.disabled.namedCurves

.jack-server访问问题

$HOME/.jack-server/logs日志如下

com.android.jack.server.api.v01.ServerException: '.' is not owned by 'root' but by 'user'
        at com.android.jack.server.JackServerImpl.run(JackServerImpl.java:65)
        at com.android.jack.launcher.ServerLauncher$3.run(ServerLauncher.java:391)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: '.' is not owned by 'root' but by 'user'
        at com.android.jack.server.JackHttpServer.getCurrentUser(JackHttpServer.java:1040)
        at com.android.jack.server.JackHttpServer.<init>(JackHttpServer.java:377)
        at com.android.jack.server.JackServerImpl.run(JackServerImpl.java:61)
        ... 2 more

原因是 $HOME/.jack-server的owner和group都应该是root,却变成了user

修改如下:

chown -R root /home/user/.jack-server

chgrp -R root /home/user/.jack-server

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值