Android 7.0編譯的遇到的一些問題

Android7.0(也就是Android N)上默認使用JACK編譯器而不再使用openjdk了寝受,但發(fā)現(xiàn)JACK不是很好用,比如最大的一個問題就是堕花,同一臺linux服務器上不允許不同用戶同時進行andorid7.0的編譯术瓮,原因就是后面開始編譯的用戶無法正常啟動jack server,而jack server居然不能關閉冰更,雖然JACK文檔中有說提供一些宏,只要設置宏為對應的值就可以關閉昂勒,但實測發(fā)現(xiàn)無效蜀细,關閉不了,這個蛋痛的問題戈盈,搞了2天奠衔,不過總算有方法可以搞定,下面是我對多用戶無法同時編譯的問題的解決過程(最下面有解決方案奕谭,):

圖片發(fā)自簡書App



1涣觉,嘗試關閉JACK,但發(fā)現(xiàn)失斞:

1)官册,當在板型目錄中的BoardConfig.mk中添加ANDROID_COMPILE_WITH_JACK:=false時,編譯會出錯:

ninja: error: 'out/target/common/obj/APPS/ActSensorCalib_intermediates/with-local/classes.dex', needed by 'out/target/common/obj/APPS/ActSensorCalib_intermediates/classes.dex', missing and no known rule to make it

make[1]: *** [ninja_wrapper] Error 1

2)难捌,當在板型目錄中的BoardConfig.mk中添加DEFAULT_JACK_ENABLED := disabled時膝宁,仍然不能關閉JACK,都會報錯:

[ 34% 13188/37803] 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 -XX:+TieredCompilation\" prebuilts/sdk/tools/jack-admin start-server 2>&1 || exit 0 ) &&

(prebuilts/sdk/tools/jack-admin update server 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 jack prebuilts/sdk/tools/jacks/jack-3.36.CANDIDATE.jar 3.36.CANDIDATE || exit 47;

prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-4.7.BETA.jar 4.7.BETA || exit 47 )"

Writing client settings in /home/test/.jack-settings

Installing jack server in "/home/test/.jack-server"

Communication error with Jack server (58), try 'jack-diagnose' or see Jack server log

Failed to contact Jack server: Problem reading /home/test/.jack-server/client.pem. Try 'jack-diagnose'

Failed to contact Jack server: Problem reading /home/test/.jack-server/client.pem. Try 'jack-diagnose'

[ 34% 13188/37803] Compiling SDK Stubs...tubs_current_intermediates/classes.jar

Note: Some input files use or override a deprecated API.

Note: Recompile with -Xlint:deprecation for details.

Note: Some input files use unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

[ 34% 13188/37803] target SharedLib: l...bLLVM_intermediates/LINKED/libLLVM.so)

ninja: build stopped: subcommand failed.

make[1]: *** [ninja_wrapper] Error 1

make[1]: Leaving directory `/home/test/700E/android/android'

3)根吁,嘗試通過設置ANDROID_FORCE_JACK_ENABLED := disabled來進行關閉JACK 员淫,編譯也報錯,跟1)一樣的錯誤:

ninja: warning: multiple rules generate out/target/product/s900_RY_VR/system/xbin/su. builds involving this target will not be correct; continuing anyway [-w dupbuild=warn]

ninja: error: 'out/target/common/obj/APPS/ActSensorCalib_intermediates/with-local/classes.dex', needed by 'out/target/common/obj/APPS/ActSensorCalib_intermediates/classes.dex', missing and no known rule to make it

make[1]: *** [ninja_wrapper] Error 1

2击敌,嘗試解決介返,網(wǎng)上有很多人反映這個問題,但是目前沒有有效的解決方案沃斤,最可能的辦法是從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 settings

SERVER_HOST=127.0.0.1

SERVER_PORT_SERVICE=8076

SERVER_PORT_ADMIN=8077

# Internal, do not touch

SETTING_VERSION=4

通過實驗發(fā)現(xiàn)关面,單獨修改配置文件$HOME/.jack-settings中的端口號沒有效果,jack server一直啟動失敗十厢,提示端口被占用:

com.android.jack.server.api.v01.ServerException: Problem while opening service port

? ? ? ? at com.android.jack.server.JackHttpServer.start(JackHttpServer.java:611)

? ? ? ? at com.android.jack.server.JackServerImpl.run(JackServerImpl.java:62)

? ? ? ? at com.android.jack.launcher.ServerLauncher$3.run(ServerLauncher.java:391)

? ? ? ? at java.lang.Thread.run(Thread.java:745)

Caused by: java.net.BindException: Address already in use

? ? ? ? at 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澈驼,這樣就可以實現(xiàn)多用戶同時編譯,親測有效:

#Tue Sep 13 17:44:41 CST 2016

jack.server.max-jars-size=104857600

jack.server.max-service=4

jack.server.service.port=8076

jack.server.max-service.by-mem=1\=2147483648\:2\=3221225472\:3\=4294967296

jack.server.admin.port=8077

jack.server.config.version=2

jack.server.time-out=7200? ? ? (修改jack.server.service.port=8076 和jack.server.admin.port=8077這2行筛武,比如改為8086缝其,8087等)

總結一下解決方案就是:

同時修改$HOME/.jack-settings和$HOME/.jack-server/config.properties中的端口號(比如都改為8086/8087)挎塌,方可支持多用戶同時編譯。

目前可以先用這個方法解決問題内边。

補充一下后來編譯遇到的錯誤的解決方法:

錯誤提示:

[ 8% 1/12] 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.ServerLauncher
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.
make[1]: *** [ninja_wrapper] Error 1


解決方案:

通過查看文件 $HOME/.jack-server/logs/jack-server-0-0.log:

10:26:40.898:SEVERE: com.android.jack.launcher.ServerLauncher: Server 1 Exception
com.android.jack.server.api.v01.ServerException: './config.properties' musthave permission rw------- but have rwx------
? atcom.android.jack.server.JackServerImpl.run(JackServerImpl.java:65)
? atcom.android.jack.launcher.ServerLauncher$3.run(ServerLauncher.java:391)
? atjava.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: './config.properties' must have permissionrw------- but have rwx------
? at com.android.jack.server.JackHttpServer.checkAccess(JackHttpServer.java:696)
? atcom.android.jack.server.JackHttpServer.loadConfig(JackHttpServer.java:513)
? atcom.android.jack.server.JackHttpServer.<init>(JackHttpServer.java:379)
? at com.android.jack.server.JackServerImpl.run(JackServerImpl.java:61)
? ... 2 more

發(fā)現(xiàn)是配置文件的權限不對造成的榴都,把文件$HOME/.jack-server/config.properties的權限由rwx改為rw即可解決問題。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末漠其,一起剝皮案震驚了整個濱河市嘴高,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌和屎,老刑警劉巖拴驮,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異柴信,居然都是意外死亡套啤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門随常,熙熙樓的掌柜王于貴愁眉苦臉地迎上來潜沦,“玉大人,你說我怎么就攤上這事绪氛∷艏Γ” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵枣察,是天一觀的道長争占。 經(jīng)常有香客問我,道長序目,這世上最難降的妖魔是什么燃乍? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮宛琅,結果婚禮上,老公的妹妹穿的比我還像新娘逗旁。我一直安慰自己嘿辟,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布片效。 她就那樣靜靜地躺著红伦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪淀衣。 梳的紋絲不亂的頭發(fā)上昙读,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音膨桥,去河邊找鬼蛮浑。 笑死唠叛,一個胖子當著我的面吹牛,可吹牛的內容都是我干的沮稚。 我是一名探鬼主播艺沼,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蕴掏!你這毒婦竟也來了障般?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤盛杰,失蹤者是張志新(化名)和其女友劉穎挽荡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體即供,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡定拟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了募狂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片办素。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖祸穷,靈堂內的尸體忽然破棺而出性穿,到底是詐尸還是另有隱情,我是刑警寧澤雷滚,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布需曾,位于F島的核電站,受9級特大地震影響祈远,放射性物質發(fā)生泄漏呆万。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一车份、第九天 我趴在偏房一處隱蔽的房頂上張望谋减。 院中可真熱鬧,春花似錦扫沼、人聲如沸出爹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽严就。三九已至,卻和暖如春器罐,著一層夾襖步出監(jiān)牢的瞬間梢为,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留铸董,地道東北人祟印。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像袒炉,于是被迫代替她去往敵國和親旁理。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,520評論 25 707
  • afinalAfinal是一個android的ioc我磁,orm框架 https://github.com/yangf...
    passiontim閱讀 15,401評論 2 45
  • Android 新一代編譯 toolchain Jack & Jill 簡介 2016 年 3 月 10 日孽文, G...
    heiheiwanne閱讀 1,197評論 0 3
  • 若是回到以前,或許一切不同 因為沒有如果夺艰,所以更覺珍重 徹夜的輾轉反側芋哭,只是因為一瞬間的想起 原來內心的最深處,還...
    子非木衣閱讀 129評論 0 0
  • 穿著我最喜愛的一身運動服郁副,背著從不離身的黑色背包减牺。 可能是深夜,但我不知道是幾點存谎。絲絲細雨被微風吹到臉上涼涼的拔疚,氣...
    萬萬來不了閱讀 285評論 0 1