在虛擬機中編譯android7
1.try ‘jack-diagnose’ or see Jack server log 參考
原因:jack不支持多用戶同時編譯,所以經常出現jack server報錯的現象。主機中的port和虛擬機中的port相同。
解決:
/home/aaron/.jack-server/config.properties
/home/aaron/.jack-settings
編譯這兩個文件,修改 port值,並保持一致。
例:
SERVER_PORT_SERVICE=8074
SERVER_PORT_ADMIN=8075
這兩個文件權限爲600
2.Out of memory error 參考
原因: java 虛擬機的默認內存太小不滿足編譯要求,需要增大內存
解決:修改 prebuilts/sdk/tools/jack-admin 文件,增加 ‘-Xmx’。如下我使用的是 -Xmx4G
- 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 -Xmx4G -cp $LAUNCHER_JAR $LAUNCHER_NAME"
另外編譯需要關閉當前已經運行的 jack-admin,再進行編譯才能啓動新的 jack-admin
./prebuilts/sdk/tools/jack-admin kill-server
3/bin/bash: xmllint: command not found 參考
解決方法安裝 xmllint 命令如下:
apt-get install libxml2-utils
4.kernel: Out of memory: Killed process 參考
原因:內存不夠
解決:添加swap分區
sudo dd if=/dev/zero of=/root/swapfile bs=1M count=4096
sudo mkswap /root/swapfile
sudo swapon /root/swapfile
echo "/root/swapfile swap swap defaults 0 0" >> /etc/fstab