zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据(转)
    保存图片文件到本地
    android ScrollView中嵌套GridView,ListView只显示一行的解决办法
    蒙版提示页(添加新功能后的一种提示)
    C和指针 第三章--数据
    *(ptr++) += 123
    优先级队列-堆
    单链表相关(一)
    字符间的距离-动态规划
    和最大的连续子数组
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/9273844.html
Copyright © 2011-2022 走看看