Android 编译(2)——jack-server相关问题

2023-11-03 20:58

本文主要是介绍Android 编译(2)——jack-server相关问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Jack server

The Jack server’s goal is to handle a pool of Jack compiler instances in order to limit memory usage and benefit from already warm instances.

Android7.0系统编译工具链使用了全新的Jack server来取代以往的编译器工具

Jack is a new Android toolchain that compiles Java source into Android dex bytecode. It replaces the previous Android toolchain, which consists of multiple tools, such as javac, ProGuard, jarjar, and dx.
Jack编译器工具是一套新的Android编译工具用来将Java代码转换为Android dex字节代码。

使用问题

Jack server没有安装

报错信息:

Jack server installation not found
prebuilts/sdk/tools/jack-admin: line 57: /home/forlinx/.jack-settings.14348: Permission denied

安装jack-server

cd prebuilts/sdk/tools/
./jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar

多用户使用问题

参考链接:
https://www.jianshu.com/p/dc85817b78f8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendationhttps://blog.csdn.net/czy_1125/article/details/78432018https://blog.csdn.net/xw13782513621/article/details/79260207

报错信息:

Jack server already installed in "/home/forlinx/work/.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 server
OK3399-android7-source$ rm ~/.jack-server -rf
OK3399-android7-source$ rm ~/.jack-settings
OK3399-android7-source$ cd prebuilts/sdk/tools/
OK3399-android7-source/prebuilts/sdk/tools$  ./jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar执行jack-diagnose进行诊断
OK3399-android7-source/prebuilts/sdk/tools$ chmod u+x jack-diagnose
OK3399-android7-source/prebuilts/sdk/tools$ ./jack-diagnose
发现有部分库文件没有安装
OK3399-android7-source/prebuilts/sdk/tools$ sudo apt-get update
OK3399-android7-source/prebuilts/sdk/tools$ sudo apt-get install lsof
OK3399-android7-source/prebuilts/sdk/tools$ ./jack-diagnose

多用户的使用需要在.jack-settings和.jack-server/config.properties这两个配置文件中配置不同的端口
用户A:8000、8001

vi ~/.jack-settings# Server settings
SERVER_HOST=127.0.0.1
SERVER_PORT_SERVICE=8000
SERVER_PORT_ADMIN=8001# Internal, do not touch
SETTING_VERSION=4
vi ~/.jack-server/config.properties#
#Fri Sep 10 07:22:55 UTC 2021
jack.server.max-jars-size=104857600
jack.server.max-service=4
jack.server.service.port=8000
jack.server.max-service.by-mem=1\=2147483648\:2\=3221225472\:3\=4294967296
jack.server.admin.port=8001
jack.server.config.version=2
jack.server.time-out=7200

用户B:8100、8101

vi ~/.jack-settings# Server settings
SERVER_HOST=127.0.0.1
SERVER_PORT_SERVICE=8100
SERVER_PORT_ADMIN=8101# Internal, do not touch
SETTING_VERSION=4
vi ~/.jack-server/config.properties#
#Mon Sep 13 02:07:47 UTC 2021
jack.server.max-jars-size=104857600
jack.server.max-service=4
jack.server.service.port=8100
jack.server.max-service.by-mem=1\=2147483648\:2\=3221225472\:3\=4294967296
jack.server.admin.port=8101
jack.server.config.version=2
jack.server.time-out=7200

config.properties文件在第一次编译之前没有生成,可以先执行一遍编译,再进行修改

OK3399-android7-source/prebuilts/sdk/tools$ vi /home/forlinx/work/.jack-settings
编译源码,报错后修改新生成的config.properties,端口配置保持一致
OK3399-android7-source/prebuilts/sdk/tools$ vi /home/forlinx/work/.jack-server/config.properties
编译即可通过

question3

Could not execute 'apt-key' to verify signature (is gnupg installed?)
sudo chmod 777 /tmp

question4

Jack server failed to (re)start, try 'jack-diagnose' or see Jack server log
No Jack server running. Try 'jack-admin start-server'
No Jack server running. Try 'jack-admin start-server'
ninja: build stopped: subcommand failed.
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
重新安装配置Jack server
OK3399-android7-source$ rm ~/.jack-server -rf
OK3399-android7-source$ rm ~/.jack-settings
OK3399-android7-source$ cd prebuilts/sdk/tools/
OK3399-android7-source/prebuilts/sdk/tools$  ./jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar执行jack-diagnose进行诊断
OK3399-android7-source/prebuilts/sdk/tools$ chmod u+x jack-diagnose
OK3399-android7-source/prebuilts/sdk/tools$ ./jack-diagnose

有可能会遇到多用户端口问题,所以建议提前修改配置.jack-settings和.jack-server/config.properties

TBC(jack server安装、与openjdk对比、用于编译什么内容、运行机制)

这篇关于Android 编译(2)——jack-server相关问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/340818

相关文章

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Java死锁问题解决方案及示例详解

《Java死锁问题解决方案及示例详解》死锁是指两个或多个线程因争夺资源而相互等待,导致所有线程都无法继续执行的一种状态,本文给大家详细介绍了Java死锁问题解决方案详解及实践样例,需要的朋友可以参考下... 目录1、简述死锁的四个必要条件:2、死锁示例代码3、如何检测死锁?3.1 使用 jstack3.2

解决JSONField、JsonProperty不生效的问题

《解决JSONField、JsonProperty不生效的问题》:本文主要介绍解决JSONField、JsonProperty不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录jsONField、JsonProperty不生效javascript问题排查总结JSONField

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存