亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android 7.0工程之預編譯jack服務器

2019-11-09 17:32:10
字體:
來源:轉載
供稿:網友
/***************************************************************************** * Author : Elvins Fu    yeyecheng_93@163.com * * Info : Boway Inc,(C) 2016-11-28, All rights revseved. * * Description : This document is summed up by the author for that the company of Boway’s    * R&D install the java running environment or Java development kit and build the PRoject on    * Android 7.0 Platform success. * * This context describes that Android 7.0 Environment preview build tools has been replace        * openjdk-7-jre tools with jack server.****************************************************************************/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 startedFAILED: /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-serverLaunching 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.ServerLauncherJack server failed to (re)start, try 'jack-diagnose' or see Jack server log2.ubuntu主機的本地目錄的注意在服務器192.168.2.188主目錄不存在jack-server,我以自己的主機模擬192.168.2.188環境,下面的命令作為參考;找個已安裝openjdk8環境的Ubuntu主機,把文件拷貝過來,這樣的方法比以前編譯openjdk8的方法更快速,但依賴關系并不好,風險度高。------------------------------------2079 scp -r /etc/java-8-openjdk/ bule@192.168.2.244:/etc/(先傳輸該文件夾,下面的文件夾中有對此文件的軟連接文件)2075 scp -r /usr/lib/jvm/java-1.8.0-openjdk-amd64 bule@192.168.2.244:/usr/lib/jvm2077 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主機上。2081 scp -r .jack-server/ bule@192.168.2.244:.jack-server2082 scp -r .jack bule@192.168.2.244:.jack2086 scp -r .jack-settings bule@192.168.2.244:.jack-settings-------------------------------------------------------------將openjdk寫入系統的環境和配置編譯選項中2040 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/bin/java2041 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/bin/java 10812042 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 10812043 sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/java-8-openjdk-amd64/bin/javap 10812044 sudo update-alternatives --install /usr/bin/javah javah /usr/lib/jvm/java-8-openjdk-amd64/bin/javah 10812045 sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/java-8-openjdk-amd64/bin/jar 10812048 sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc 1081------------------------------轉換為openjdk-8-jre的java環境2050 sudo update-alternatives --config javadoc 2051 sudo update-alternatives --install /usr/bin/java java 2052 sudo update-alternatives --config java2053 sudo update-alternatives --config javac2054 sudo update-alternatives --config javap2055 sudo update-alternatives --config javah2056 sudo update-alternatives --config javadoc 2057 sudo update-alternatives --config jar3.在Android 7.0的工程中進行編譯之前,運行如下命令,進行交互bule@sky:~/workspace/jianwen.fu/jianwen.fu/V65_An7/prebuilts/sdk/tools$ jack-admin start-server jack-admin kill-server jack-admin list-server jack-admin uninstall-server mm -j32 showcommands &> mm.out jack-admin install-server jack-launcher.jar  jack-server-4.8.ALPHA.jar jack-admin dump-report jack-admin dump-re以上環境配置成功后,ubuntu主機的Jack -server和Android的工程Jack -server相互交互,Android 7.0能夠成功編譯.4.參考信息http://source.android.com/source/initializing.html.http://source.android.com/source/jack.htmlhttps://code.google.com/p/android/issueshttps://android.googlesource.com/platform/prebuilts/sdk/+/master/tools/README-jack-server.mdhttps://code.google.com/p/android/issues/detail?id=194027#c145.Jack server的分析當你編譯Android時,你不需要修改任何內容。 Jack是Andriod M的默認編譯工具。只需使用標準的makefile命令執行即可。當第一次執行jack時,它會在你的機器上啟動一個jack編譯服務:這個服務大大提高了編譯速度,因為它避免了啟動一個新的JVM,加載Jack代碼,初始化Jack和每次編譯都要預制JIT,即使在很小的編譯過程中,它也很好的節省了時間(例如,在incremental模式)這個服務也是一個控制Jack并行編譯的短期解決方案。它可以限制編譯的并行數據量,這樣也可以避免內存硬盤溢出問題當一段時間沒有編譯活動,Jack 服務會自動關閉,默認它在本地使用了兩個TCP端口,且不對外公開。它也提供了很多參數來配置Jack服務,例如并行數量,timeout時間,端口等等。只修改$HOME/.jack 文件即可。$HOME/.jack 文件$HOME/.jack 文件包含了Jack服務的設置變量以下是現在可用的變量說明:SERVER=true 啟用Jack server SERVER_PORT_SERVICE=8072 編譯服務TCP端口. SERVER_PORT_ADMIN=8073 管理服務TCP端口 SERVER_COUNT=1 目前沒用 SERVER_NB_COMPILE=4 最大編譯并行數 SERVER_TIMEOUT=60 空閑時間分鐘數據,無編譯時間超出該時間,將自動關閉服務 SERVER_LOG=${SERVER_LOG:=$SERVER_DIR/jack-$SERVER_PORT_SERVICE.log} 服務器日志存放目錄,可被環境變量替換 JACK_VM_COMMAND=${JACK_VM_COMMAND:=java} 默認啟動JVM的命令,可被環境變量替換 Jack 問題1.你的電腦沒有響應或者編譯過程出現內存溢出你可以減少SERVER_NB_COMPILE數量,來減少編譯占用內存。1.Cannot launch background server很有可能時TCP端口被占用,試著修改SERVER_PORT_SERVICE和SERVER_PORT_ADMIN參數Jack 限制?Jack server 默認是單用戶的,所以只能同時被一個用戶使用。如果需要多個用戶同時使用,請每個人都使用不同的端口。也可以通過設置SERVER=false 禁用Jack Server?CTS 編譯會變慢.?二進制碼有關的工具將不支持, 例如 JaCoCo.使用Jack特性Jack支持JDK1.7,并且整合了一下特性Predexing當生成Jack包時,dex包將會被生成,并存儲到Jack包中,這個過程就是pre-dex,在編譯過程中,Jack會為每一個包使用pre-dex.所有的包都將pre-dexed限制:當前版本,如果設置了代碼壓縮/混淆/重新打包,Jack將不會重用pre-dex 包6.Jack-server多用戶編譯實現Android7.0(也就是Android N)上默認使用JACK編譯器而不再使用openjdk了,但發現JACK不是很好用,比如最大的一個問題就是,同一臺linux服務器上不允許不同用戶同時進行andorid7.0的編譯,原因就是后面開始編譯的用戶無法正常啟動jack server,而jack server居然不能關閉,雖然JACK文檔中有說提供一些宏,只要設置宏為對應的值就可以關閉,但實測發現無效,關閉不了,嘗試解決,網上有很多人反映這個問題,https://code.google.com/p/android/issues/detail?id=194027,但是目前沒有有效的解決方案,最可能的辦法是從2個方面嘗試:1),這個issue有人說是需要增加RAM:I was on VitualMachine when I had the error. And the fix was to increase the RAM,不過他是在虛擬機上,我們的應該跟RAM無關;2),通過修改配置文件$HOME/.jack-settings,設置不同的端口號:# Server settingsSERVER_HOST=127.0.0.1SERVER_PORT_SERVICE=8076SERVER_PORT_ADMIN=8077# Internal, do not touchSETTING_VERSION=4通過實驗發現,單獨修改配置文件$HOME/.jack-settings中的端口號沒有效果,jack server一直啟動失敗,提示端口被占用:Caused by: java.NET.BindException: Address already in useat sun.nio.ch.Net.bind0(Native Method)at sun.nio.ch.Net.bind(Net.java:433)at sun.nio.ch.Net.bind(Net.java:425)at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)at com.android.jack.server.ServerParameters.openSocket(ServerParameters.java:88)at com.android.jack.server.ServerParameters.getServiceSocket(ServerParameters.java:67)at com.android.jack.server.JackHttpServer.start(JackHttpServer.java:605)3),需要同時修改 $HOME/.jack-server/config.properties 中的端口號,方才有效,可以在別的用戶啟動了jack server的情況再啟動另一個jack server,這樣就可以實現多用戶同時編譯,親測有效:#Tue Sep 13 17:44:41 CST 2016jack.server.max-jars-size=104857600jack.server.max-service=4jack.server.service.port=8076 jack.server.max-service.by-mem=1/=2147483648/:2/=3221225472/:3/=4294967296jack.server.admin.port=8077jack.server.config.version=2jack.server.time-out=7200 (修改上面紅色這2行,比如改為8086,8087等)總結一下解決方案就是:同時修改$HOME/.jack-settings和$HOME/.jack-server/config.properties中的端口號(比如都改為8086/8087),方可支持多用戶同時編譯。目前可以先用這個方法解決問題,后面看google是否會對JACK做優化。有任何問題,請大家拍磚!---------------------------------------------------------------------------------------------------補充一下后來編譯遇到的錯誤的解決方法: 錯誤提示: Ensure Jack server is installed and started再試了一次還是報錯:FAILED:/bin/bash -c "(prebuilts/sdk/tools/jack-admin install-serverprebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar2>&1 || (exit 0) ) &&(JACK_SERVER_VM_ARGUMENTS=/"-Dfile.encoding=UTF-8-XX:+TieredCompilation/" prebuilts/sdk/tools/jack-admin start-server2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin updateserver prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar 4.8.ALPHA 2>&1 ||exit 0 ) && (prebuilts/sdk/tools/jack-admin update jackprebuilts/sdk/tools/jacks/jack-2.28.RELEASE.jar 2.28.RELEASE || exit 47;prebuilts/sdk/tools/jack-admin update jackprebuilts/sdk/tools/jacks/jack-3.36.CANDIDATE.jar 3.36.CANDIDATE || exit 47;prebuilts/sdk/tools/jack-admin update jackprebuilts/sdk/tools/jacks/jack-4.7.BETA.jar 4.7.BETA || exit 47 )"Jack server already installed in"/home/local/ACTIONS/songzhining/.jack-server"Launching Jack server java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=/tmp-Dfile.encoding=UTF-8 -XX:+TieredCompilation -cp/home/local/ACTIONS/songzhining/.jack-server/launcher.jarcom.android.jack.launcher.ServerLauncherJack server failed to (re)start, try 'jack-diagnose' or see Jack server logNo Jack server running. Try 'jack-admin start-server'No Jack server running. Try 'jack-admin start-server'ninja: build stopped: subcommand failed.make[1]: *** [ninja_wrapper] Error 1解決方案:通過查看文件 $HOME/.jack-server/logs/jack-server-0-0.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即可解決問題。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜免费久久久久| 午夜精品一区二区三区av| 国模吧一区二区| 国产精品久久久久久久久久久久久| 夜夜躁日日躁狠狠久久88av| 日本欧美一级片| 欧美一区第一页| 国产精品高潮粉嫩av| 亚洲国产97在线精品一区| 国产欧美一区二区三区久久| 国产精品久久婷婷六月丁香| 色偷偷亚洲男人天堂| 日韩专区中文字幕| 亚洲国产精品yw在线观看| 精品在线观看国产| 久久久久北条麻妃免费看| 色综合亚洲精品激情狠狠| 欧美午夜片在线免费观看| 国产精品久久久久久久久久新婚| 欧美肥老太性生活视频| 亚洲va久久久噜噜噜久久天堂| 亚洲aaa激情| 日韩在线观看免费网站| 日韩精品高清视频| 欧美wwwwww| 96sao精品视频在线观看| 国产精品久久久久av| 久久精彩免费视频| 国产精品揄拍一区二区| 色综合天天综合网国产成人网| 日韩一区二区久久久| 性色av一区二区三区在线观看| 亚洲国产精品成人va在线观看| 韩日精品中文字幕| 久久久久久久久国产精品| 亚洲福利视频专区| 亚洲第一二三四五区| 久久久久久久久久久免费| 日韩人体视频一二区| 欧美成人精品激情在线观看| 高清亚洲成在人网站天堂| 97视频在线观看免费高清完整版在线观看| 欧美电影免费播放| 国产成人亚洲综合91精品| 亚洲成人国产精品| 久久久久久伊人| 亚洲网站视频福利| 国产精品精品视频一区二区三区| 亚洲激情在线观看| 久久99久久亚洲国产| 亚洲国产欧美在线成人app| 国产精品视频永久免费播放| 全亚洲最色的网站在线观看| 亚洲精品在线不卡| 亚洲国产三级网| 亚洲国产中文字幕久久网| 日韩在线观看电影| 国产在线精品一区免费香蕉| 国色天香2019中文字幕在线观看| 欧美大片大片在线播放| 亚洲国产精品人久久电影| 日韩视频免费在线观看| 欧美日韩国产麻豆| 欧美性猛交视频| 亚洲精品www久久久久久广东| 亚洲一区二区中文字幕| 精品国产一区二区三区久久久狼| 日本道色综合久久影院| 日韩亚洲欧美中文高清在线| 久久天堂av综合合色| 国产精品稀缺呦系列在线| 久久久久日韩精品久久久男男| 自拍偷拍亚洲一区| 亚洲电影免费观看高清完整版| 欧美黑人xxxⅹ高潮交| 午夜欧美大片免费观看| 午夜精品久久久久久久99热浪潮| 国产精品美女主播| 久久男人av资源网站| 国产欧美精品久久久| 亚洲深夜福利视频| 欧美激情精品久久久久久变态| 青青青国产精品一区二区| 国产精品免费视频xxxx| 欧美最猛性xxxxx亚洲精品| 国产精品女视频| 久久久久久久香蕉网| 精品亚洲国产成av人片传媒| 亚洲韩国日本中文字幕| 欧美综合第一页| 国产999精品久久久影片官网| 亚洲毛片一区二区| 亚洲国产欧美在线成人app| 国模私拍视频一区| 69国产精品成人在线播放| 欧美日韩精品中文字幕| 日韩av电影在线网| 久久97精品久久久久久久不卡| 欧美色欧美亚洲高清在线视频| 欧美电影免费观看高清完整| 欧美怡红院视频一区二区三区| 亚洲成人网久久久| 久久久国产一区二区三区| 日韩在线资源网| 久热在线中文字幕色999舞| 欧美多人爱爱视频网站| 久久久久北条麻妃免费看| 美女av一区二区| 国产日本欧美一区| 亚洲欧美资源在线| 久久精品中文字幕一区| 国产婷婷成人久久av免费高清| 最近免费中文字幕视频2019| 91精品久久久久久久久中文字幕| 亚洲精品国产品国语在线| 色偷偷av一区二区三区| 黑人精品xxx一区| 日韩美女视频免费在线观看| 久久伊人色综合| 韩国三级电影久久久久久| 另类图片亚洲另类| 中文字幕在线看视频国产欧美在线看完整| 欧美激情在线视频二区| 国产精品美女免费| 98精品国产高清在线xxxx天堂| 久久视频在线观看免费| 日本免费一区二区三区视频观看| 亚洲国产小视频| 亚洲一区二区三区777| 久久伊人精品天天| 大桥未久av一区二区三区| 国产成人福利视频| 精品国产欧美一区二区三区成人| 欧美高清理论片| 黄色一区二区三区| 国产精品欧美久久久| 欧美日韩亚洲精品内裤| 热re91久久精品国99热蜜臀| 日韩av电影手机在线| 欧美丝袜第一区| 欧美日韩午夜视频在线观看| 国产精品永久免费| 狠狠色噜噜狠狠狠狠97| 亚洲国产成人精品久久| 欧美午夜电影在线| 国产美女久久精品| 欧美高跟鞋交xxxxhd| 亚洲欧美日韩天堂一区二区| 色噜噜亚洲精品中文字幕| 日韩亚洲国产中文字幕| 国色天香2019中文字幕在线观看| 国产v综合ⅴ日韩v欧美大片| 国产一区私人高清影院| 国产成人欧美在线观看| 欧美激情一二三| 亚洲欧美日韩久久久久久| 精品久久久久久久久久ntr影视| 亚洲直播在线一区| 69av成年福利视频| 国产精品老牛影院在线观看| 欧美亚洲视频在线观看| 久久久免费观看视频| 欧美日韩成人网| 91精品视频在线|