基于ubuntu16.04多用户编译android N(android 7.1)系统提示ninja_wrapper错误问题
基于ubuntu16.04多用戶編譯android N(android 7.1)系統提示ninja_wrapper錯誤問題
?
Ubuntu 1604系統除了root,還有kandi和sundi兩個用戶,我先用kandi用戶編譯的,可編譯通過,后面再用sundi的用戶編譯,出錯信息如下:
[ 19% 12620/64631] Ensure Jack server isinstalled and started
FAILED: /bin/bash -c"(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jarprebuilts/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-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 )"
Writing client settingsin /home/sundi/.jack-settings
Installing jack serverin "/home/sundi/.jack-server"
?
Warning:
The JKS keystore uses a proprietary format.It is recommended to migrate to PKCS12 which is an industry standard formatusing "keytool -importkeystore -srckeystore /home/sundi/.jack-server/server.jks-destkeystore /home/sundi/.jack-server/server.jks -deststoretype pkcs12".
?
Warning:
The JKS keystore uses a proprietary format.It is recommended to migrate to PKCS12 which is an industry standard formatusing "keytool -importkeystore -srckeystore /home/sundi/.jack-server/client.jks-destkeystore /home/sundi/.jack-server/client.jks -deststoretype pkcs12".
Communication error with Jack server (77),try 'jack-diagnose' or see Jack server log
Failed to contact Jackserver: Problem reading /home/sundi/.jack-server/server.pem. Try'jack-diagnose'
Failed to contact Jackserver: Problem reading /home/sundi/.jack-server/server.pem. Try'jack-diagnose'
?
此問題是在于Android N新特性中,將同一個使用過的TCP端口將視為唯一,所以遇到這種情況下需要修改兩處文件。具體步驟如下:
1.????修改用戶根目錄下的.jack-settings文件的兩個端口
vi .jack-settings(注意:此處一定要用vi命令,改完后執行chmod600 .jack-settings;確保文件權限為-rw-------)
2.????修改用戶根目錄下.jack-server目錄下的config.properties文件的兩個端口
但沒有發現此文件,進入代碼的prebuilts/sdk/tools目錄下./jack-adminstart-server來生成config.properties文件,如果失敗,以此嘗試下面的操作
(1)??./jack-admin stop-server
(2)??./jack-admin kill-server
(3)??./jack-admin uninstall-server
(4)??./jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar
(5)??./jack-admin start-server
提示:程序會卡在此處,先等待兩秒,讓程序自動生成.jack-server/config.properties文件,然后執行Ctrl+C,此時就有config.properties文件了,修改此文件的端口號,需要與.jack-settings的端口相對應,而且不能和其他用戶的一樣。
?
重新編譯還是提示錯誤,如下:
?
FAILED: /bin/bash -c "(mkdir -pout/target/common/obj/JAVA_LIBRARIES/sdk_v8_intermediates/classes.jack.tmpjill.res) && (unzip -qo prebuilts/sdk/8/android.jar -dout/target/common/obj/JAVA_LIBRARIES/sdk_v8_intermediates/classes.jack.tmpjill.res) && (findout/target/common/obj/JAVA_LIBRARIES/sdk_v8_intermediates/classes.jack.tmpjill.res-iname \"*.class\" -delete ) && (JACK_VERSION=3.36.CANDIDATEout/host/linux-x86/bin/jack @build/core/jack-default.args --verbose error? -D jack.import.resource.policy=keep-first -Djack.import.type.policy=keep-first -D jack.android.min-api-level=1 --importprebuilts/sdk/8/android.jar --import-resourceout/target/common/obj/JAVA_LIBRARIES/sdk_v8_intermediates/classes.jack.tmpjill.res--output-jack out/target/common/obj/JAVA_LIBRARIES/sdk_v8_intermediates/classes.jack) && (rm -rfout/target/common/obj/JAVA_LIBRARIES/sdk_v8_intermediates/classes.jack.tmpjill.res)"
mkdir: cannot createdirectory ‘/tmp/jack-Data.BU/jack-task-15702/’:Permission denied
提示在/tmp/jack-Data.BU下沒有權限創建jack-task-15702,用ll命令查看權限
? rwx(Owner)r-x(Group)r-x(Other)
第1列表示文件的屬性,這里為drwx------,這里有10格,第1格表示第一個小格是特殊表示格,表示目錄或連結文件等等,d表示目錄。后面依次表示文件owner、所在的group和other用戶的權限,可讀(r),可寫(w),可執行(x),說明此目錄只有owner(這里為kandi)有rwx權限,其他人沒有訪問的權限。
第2列表示文件個數。
第3列表示表示該文件或目錄的擁有者,這里為kandi
第4列,表示所屬的組(group)。每一個使用者都可以擁有一個以上的組,不過大部分的使用者應該都只屬于一個組,只有當系統管理員希望給予某使用者特殊權限時,才可能會給他另一個組。這里也是kandi。
?
從上面的信息可以看出,除了kandi,其他用戶,比如我編譯出錯的sundi用戶沒有權限訪問,所以編譯出錯了。用chmod 777 jack-Data.BU修改,重新編譯OK。修改后權限
?
總結
以上是生活随笔為你收集整理的基于ubuntu16.04多用户编译android N(android 7.1)系统提示ninja_wrapper错误问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu16.04 搭建SVN服务器
- 下一篇: unbalanced enable ir