• jack server 常见错误解决方法【转】


    本文转载自:https://blog.csdn.net/qq_27061049/article/details/70156200

    jack 服务常见错误解决方法

      当你编译Android时,你不需要修改任何内容。 Jack是Andriod M的默认编译工具。只需使用标准的makefile命令执行即可。当第一次执行jack时,它会在你的机器上启动一个jack编译服务: 
      这个服务大大提高了编译速度,因为它避免了启动一个新的JVM,加载Jack代码,初始化Jack和每次编译都要预制JIT,即使在很小的编译过程中,它也很好的节省了时间(例如,在incremental模式) 
    这个服务也是一个控制Jack并行编译的短期解决方案。它可以限制编译的并行数据量,这样也可以避免内存硬盘溢出问题 
    当一段时间没有编译活动,Jack 服务会自动关闭,默认它在本地使用了两个TCP端口,且不对外公开。它也提供了很多参数来配置Jack服务,例如并行数量,timeout时间,端口等等。

    1、错误显示

      Android 7.0工程的环境需要加载openJDK 8 ,虽然上篇文档已经描述了openjdk-8的安装方法,但通常和很多ubuntu主机的Jack -server是没有和Android7.0的工程Jack -server相互交互的,Android的工程会提供相应的压缩文件去运行jack-server服务,若要顺利的编译工程,则要ubuntu主机的Jack -server和Android的工程Jack -server相互交互。

    在编译过程中会有如下错误信息。 
    [6% 1127/18030] Ensure Jack server is installed and started

    FAILED: /bin/bash -c “(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar 2>&1 || (exit 0) ) && (JACK_SERVER_VM_ARGUMENTS=/”-Dfile.encoding=UTF-8

    No Jack server running. Try ‘jack-admin start-server’ 
    No Jack server running. Try ‘jack-admin start-server’

    bule@sky:~/**/jianwen.fu/V65_An7/prebuilts/sdk/tools$ jack-admin start-server 
    Launching Jack server java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-8 -XX:+TieredCompilation -cp /home/prayasm/.jack-server/launcher.jar com.android.jack.launcher.ServerLauncher 
    Jack server failed to (re)start, try ‘jack-diagnose’ or see Jack server log

    2、ubuntu主机jack相关配置

    .ubuntu主机的本地目录的

      注意在服务器192.168.2.188主目录不存在jack-server,我以自己的主机模拟192.168.2.188环境,下面的命令作为参考;

    找个已安装openjdk8环境的Ubuntu主机,把文件拷贝过来,这样的方法比以前编译openjdk8的方法更快速,但依赖关系并不好,风险度高。(也可以自己安装,安装链接http://blog.csdn.net/qq_27061049/article/details/65626930

    1)、 scp -r /etc/java-8-openjdk/ bule@192.168.2.244:/etc/ 
    (先传输该文件夹,下面的文件夹中有对此文件的软连接文件) 
    2)、 scp -r /usr/lib/jvm/java-1.8.0-openjdk-amd64 bule@192.168.2.244:/usr/lib/jvm 
    3)、scp -r /usr/lib/jvm/java-8-openjdk-amd64/ bule@192.168.2.244:/usr/lib/jvm

    如服务器192.168.2.188,Ubuntu用户主目录无.jack .jack-server .jack-setting,那么在192.168.1.15的Ubuntu主机中执行以下命令,边将文件传输到了192.168.2.244主机上。

    4)、 scp -r .jack-server/ bule@192.168.2.244:.jack-server 
    5)、scp -r .jack bule@192.168.2.244:.jack (这个文件很多主机没有)

    6)、scp -r .jack-settings bule@192.168.2.244:.jack-settings

    (ubuntu 主机 jack 服务相关文件下载地址:http://download.csdn.net/detail/qq_27061049/9817787

    将openjdk写入系统的环境和配置编译选项中


    7)、 sudo update-alternatives –install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/bin/java 1081 
    8)、 sudo update-alternatives –install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/bin/java 1081 
    9)、 sudo update-alternatives –install /usr/bin/javac javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1081 
    10)、sudo update-alternatives –install /usr/bin/javap javap /usr/lib/jvm/java-8-openjdk-amd64/bin/javap 1081 
    11)、 sudo update-alternatives –install /usr/bin/javah javah /usr/lib/jvm/java-8-openjdk-amd64/bin/javah 1081 
    12)、 sudo update-alternatives –install /usr/bin/jar jar /usr/lib/jvm/java-8-openjdk-amd64/bin/jar 1081 
    13)、 sudo update-alternatives –install /usr/bin/javadoc javadoc /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc 1081

    转换为openjdk-8-jre的java环境

    14)、 sudo update-alternatives –config javadoc 
    15)、sudo update-alternatives –config java 
    16)、 sudo update-alternatives –config javac 
    17) sudo update-alternatives –config javap 
    18)、 sudo update-alternatives –config javah 
    19)、 sudo update-alternatives –config javadoc 
    20)、 sudo update-alternatives –config jar

    3、源码工程jack相关配置

    在Android 7.0的工程中进行编译之前,运行如下命令,进行交互。 
    进入源码相应目录 prebuilts/sdk/tools$ 
    运行下面命令: 
    1)、 jack-admin start-server 
    2)、jack-admin kill-server 
    3)、jack-admin list-server 
    4)、jack-admin uninstall-server 
    5)、mm -j32 showcommands &> mm.out 
    6)、jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar 
    7)、jack-admin dump-report 
    8)、jack-admin dump-re

    4、若没有解决尝试其他相关修改:

    1)、修改prebuilts/sdk/tools/jack-admin 文件,变量JACK_SERVER_VM_ARGUMENTS,添加参数 -Xmx4096M

    JACK_SERVER_VM_ARGUMENTS=”${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -mx4096M}”

    2)、prebuilts/sdk/tools/jack-admin 文件,在 JACK_SERVER_COMMAND=“…… -cp ……” -cp 前添加-Xmx4096m(4096m为内存大小的一半左右,根据所用的主机配置而定)

    diff --git a/tools/jack-admin b/tools/jack-admin
    index ee193fc..33cb913 100755
    --- a/tools/jack-admin
    +++ b/tools/jack-admin
    @@ -451,7 +451,7 @@ case $COMMAND in
         if [ "$RUNNING" = 0 ]; then
           echo "Server is already running"
         else
    -      JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"
    +      JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096M -cp $LAUNCHER_JAR $LAUNCHER_NAME"
           echo "Launching Jack server" $JACK_SERVER_COMMAND
           (
             trap "" SIGHUP
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    3)、prebuilts/sdk/tools/README-jack-server.md

    -JACK_SERVER_VM_ARGUMENTS="-Xmx2g -Dfile.encoding=UTF-8 -XX:+TieredCompilation" jack-admin start-server 
    +JACK_SERVER_VM_ARGUMENTS="-Xmx4g -Dfile.encoding=UTF-8 -XX:+TieredCompilation" jack-admin start-server

    4)、build/core/configure_local_jack.mk 
    by changing the line: 
    LOCAL_JACK_ENABLED := (strip(strip(LOCAL_JACK_ENABLED)) 
    into: 
    LOCAL_JACK_ENABLED := #(strip(strip(LOCAL_JACK_ENABLED)) 
    ““““““““““““““““““““““““““““““““““““““` 
    5)、把文件$HOME/.jack-server/config.properties的权限由rwx改为rw

    6)、同时修改HOME/.jacksettingsHOME/.jack−settings和HOME/.jack-server/config.properties中的端口号(比如都改为8086/8087),方可支持多用户同时编译。

    7)、当在板型目录中的BoardConfig.mk中添加ANDROID_COMPILE_WITH_JACK:=false / DEFAULT_JACK_ENABLED := disabled / ANDROID_FORCE_JACK_ENABLED := disabled来进行关闭JACK 
    8) 或者在运行编译命令时加入 make -j8 ANDROID_COMPILE_WITH_JACK=false 来关闭jack 服务 
    9)、添加相应jack-admine 的路径 ,在相应的代码目录下 PATH=./prebuilts/sdk/tools/:$PATH 
    10)、可以通过运行jack-admin server-log命令来查找jack log 具体分析

    文档参考: 
    Android 7.0工程之预编译jack服务器 
    http://www.th7.cn/system/lin/201702/202334.shtml

    Android7.0 JACK编译器不支持多用户同时编译的问题的解决 
    http://blog.csdn.net/lizekun2010/article/details/52535591

    使用Jack编译 
    http://blog.csdn.net/pcsxk/article/details/52213784#t5

    android N编译 
    http://blog.csdn.net/luvzhan/article/details/53282968

  • 相关阅读:
    nullnullConnecting with WiFi Direct 与WiFi直接连接
    nullnullUsing WiFi Direct for Service Discovery 直接使用WiFi服务发现
    nullnullSetting Up the Loader 设置装载机
    nullnullDefining and Launching the Query 定义和启动查询
    nullnullHandling the Results 处理结果
    装置输出喷泉装置(贪心问题)
    数据状态什么是事务?
    停止方法iOS CGD 任务开始与结束
    盘文件云存储——金山快盘
    函数标识符解决jQuery与其他库冲突的方法
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/9273844.html
Copyright © 2020-2023  润新知