Q1.首次編譯報錯(Ubuntu14.04-Android6.0)
Log: ERROR: Bad request, see Jack server log (/tmp/jack-envy15/jack-8072.log)
Q2.首次編譯報錯GC overhead limit exceeded (Ubuntu17.04-Android7.1)
關鍵Log:
Out of memory error (version 1.3-rc6 'Douarn' (441800 22a11d4b264ae70e366aed3025ef47362d1522bb by android-jack-team@google.com)). GC overhead limit exceeded. Try increasing heap size with java option '-Xmx<size>'. // android-7.1.1_r16 FAILED: /bin/bash out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex.rsp Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.com)). Java heap space. Try increasing heap size with java option '-Xmx<size>'. Warning: This may have produced partial or corrupted output. |
解決方案:
Out of memory error(2次) |
方法1 |
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m" out/host/linux-x86/bin/jack-admin kill-server out/host/linux-x86/bin/jack-admin start-server |
Q3.首次編譯權限報錯(Ubuntu17.04-Android7.1)
關鍵Log:
opendir failed: .dbus: Permission denied |
解決方案:
Permission denied |
方法1 |
sudo chmod 777 e2670/ -R |
Q4.編譯報錯無效UTF-8字符(Ubuntu17.04-Android7.1)
關鍵Log:
art/runtime/interpreter/unstarted_runtime.cc:1517:1: error: source file is not valid UTF-8 |
解決方案:
UTF-8字符集錯誤 |
方法1 |
參考GOOGLO代碼修正錯誤 |
Q5.報錯fatal: fork: Cannot allocate memory (Ubuntu17.04-Android7.1)
關鍵Log:
[ 3% 802/22494] Install: out/target/p...duct/angler/system/app/Music/Music.apk ninja: fatal: fork: Cannot allocate memory build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed make: *** [ninja_wrapper] Error 1 |
解決方案:
無法分配內存(2次) |
方法1 |
sysctl kernel.pid_max // 查看最大進程數 ps -eLf | wc –l // 查看運行進程數 // 修改最大進程數后系統恢復 echo 1000000 > /proc/sys/kernel/pid_max // 永久生效 echo "kernel.pid_max=1000000 " >> /etc/sysctl.conf sysctl –p 結果:無權限修改最大進程數 |
方法2 |
查看虛擬機內存分配只有6G左右,關閉虛擬機內存調整到8G,編譯正常。 |
Ref:
-bash: fork: Cannot allocate memory 問題的處理
Q6. Communication error with Jack server (52).(Ubuntu17.04-Android7.1)
關鍵Log:
[ 14% 3153/21625] Building with Jack: ...k_intermediates/with-local/classes.dex FAILED: /bin/bash out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex.rsp Communication error with Jack server (52). Try 'jack-diagnose' [ 14% 3153/21625] target C++: sgdisk <= external/gptfdisk/gptcl.cc external/gptfdisk/gptcl.cc:36:29: warning: unused parameter 'filename' [-Wunused-parameter] GPTDataCL::GPTDataCL(string filename) { ^ external/gptfdisk/gptcl.cc:109:43: warning: missing field 'descrip' initializer [-Wmissing-field-initializers] POPT_AUTOHELP { NULL, 0, 0, NULL, 0 } ^ 2 warnings generated. ninja: build stopped: subcommand failed. build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed make: *** [ninja_wrapper] Error 1 |
解決方案:
Communication error with Jack server |
方法1 |
jack-admin start-server Launching Jack server java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-8 -XX:+TieredCompilation -cp /home/galian/.jack-server/launcher.jar com.android.jack.launcher.ServerLauncher 結果:command not found |
方法2 |
jack-admin start-server ref:link |
Ref:
打造自己的Android源碼學習環境之五:編譯Android源代碼
Android7.0 JACK編譯器不支持多用戶同時編譯的問題的解決
Q7. The program 'mm' is currently not installed.(Ubuntu17.04-Android7.1)
關鍵Log:
The program 'mm' is currently not installed. You can install it by typing: sudo apt install multimail |
解決辦法:
. build/envsetup.sh
Ref:
Q8. No rule to make target 'xxx/.git/index'
安卓源碼android7.1.1-r16刪除.repo文件后編譯報錯No rule to make target 'xxx/.git/index'
關鍵Log:
No rule to make target 'xxx/.git/index' |
解決辦法:
mgrep git/index搜索源碼引用位置
修改:/build/kati/Makefile.ckati
ifneq ($(KATI_GIT_DIR),)
# KATI_VERSION_DEPS := $(KATI_GIT_DIR)/.git/HEAD $(KATI_GIT_DIR)/.git/index
# KATI_VERSION := $(shell git -C $(KATI_GIT_DIR) rev-parse HEAD)
注釋掉git相關編譯設置
Ref:
android5.0編譯問題:No rule to make target '/third_party/angle/.git/index'
參考:
AOSP