jack server 常見錯誤解決方法【轉】

本文轉載自:https://blog.csdn.net/qq_27061049/article/details/70156200html

jack 服務常見錯誤解決方法

  當你編譯Android時,你不須要修改任何內容。 Jack是Andriod M的默認編譯工具。只需使用標準的makefile命令執行便可。當第一次執行jack時,它會在你的機器上啓動一個jack編譯服務: 
  這個服務大大提升了編譯速度,由於它避免了啓動一個新的JVM,加載Jack代碼,初始化Jack和每次編譯都要預製JIT,即便在很小的編譯過程當中,它也很好的節省了時間(例如,在incremental模式) 
這個服務也是一個控制Jack並行編譯的短時間解決方案。它能夠限制編譯的並行數據量,這樣也能夠避免內存硬盤溢出問題 
當一段時間沒有編譯活動,Jack 服務會自動關閉,默認它在本地使用了兩個TCP端口,且不對外公開。它也提供了不少參數來配置Jack服務,例如並行數量,timeout時間,端口等等。java

一、錯誤顯示

  Android 7.0工程的環境須要加載openJDK 8 ,雖然上篇文檔已經描述了openjdk-8的安裝方法,但一般和不少ubuntu主機的Jack -server是沒有和Android7.0的工程Jack -server相互交互的,Android的工程會提供相應的壓縮文件去運行jack-server服務,若要順利的編譯工程,則要ubuntu主機的Jack -server和Android的工程Jack -server相互交互。android

在編譯過程當中會有以下錯誤信息。 
[6% 1127/18030] Ensure Jack server is installed and startedgit

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-8ubuntu

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

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服務器

二、ubuntu主機jack相關配置

.ubuntu主機的本地目錄的jvm

  注意在服務器192.168.2.188主目錄不存在jack-server,我以本身的主機模擬192.168.2.188環境,下面的命令做爲參考;工具

找個已安裝openjdk8環境的Ubuntu主機,把文件拷貝過來,這樣的方法比之前編譯openjdk8的方法更快速,但依賴關係並很差,風險度高。(也能夠本身安裝,安裝連接http://blog.csdn.net/qq_27061049/article/details/65626930ui

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

三、源碼工程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

四、若沒有解決嘗試其餘相關修改:

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

相關文章
相關標籤/搜索