本文主要是將編譯Android8.1過程中遇到問題記錄下來悯蝉,下載編譯Android源碼過程移步 下載編譯Android6。
前提:下載源碼,編譯
編譯過程中遇到的問題
主要是jack-server的問題鼻由,有的問題我用了好幾種方案蕉世,在這里也都一一記錄下來狠轻。
先貼幾條jack server常用命令
. prebuilts/sdk/tools/jack-admin list-server
. prebuilts/sdk/tools/jack-admin start-server
. prebuilts/sdk/tools/jack-admin kill-server
-
Q1.
SSL error when connecting to the Jack server.see Jack server log```
or
Failed to contact Jack server: Problem reading /home/user3/.jack-server/client.pem. Try ‘jack-diagnose’
or
Jack server failed to (re)start,try ‘jack-diagnose’ see Jack server log
解決過程:根據(jù)提示運(yùn)行
`. prebuilts/sdk/tools/jack-diagnose`
看到日志詳情為port被占用向楼。
#### R1:
思路1:
1).從/etc/java-8-openjdk/security/java.security file中刪除TLSv1, TLSv1.1
2).依次運(yùn)行`cd /prebuilts/sdk/tools/`躏嚎、`./jack-admin kill-server`卢佣、`./jack-admin start-server`并查看結(jié)果
思路2:更改端口號(hào)
打開~/.jack-settings 和 ~/.jcak-server/config.properties 換成其他端口號(hào)虚茶。比如8976/8977。注意兩個(gè)文件中兩個(gè)對(duì)應(yīng)端口號(hào)需要一致婆殿。
思路3:jdk版本問題罩扇。本人實(shí)踐過程中自下載的openJDK1.8.0版本會(huì)報(bào)端口被占用問題喂饥,測(cè)試運(yùn)行`. /prebuilts/sdk/tools/jack-diagnose`打印log會(huì)提示端口被占用, 換其他未使用的端口依然如此。解決方法员帮,使用android源碼自帶得到JDK捞高。(**路徑:prebuilts/jdk/**)(我用此種方式)。
也可以使用自行下載其他版本的openJDK, 卸載Android服務(wù)器自帶jdk氢哮。
思路4:刪除~/.jack-settings 和 ~/.jcak-server/config.properties 重新編譯辈讶。(prebuild/sdk/tools/目錄下執(zhí)行./jack-admin install-server jack-launcher.jar jack-server-4.11.ALPHA.jar 命令生成 .jack-server文件贱除。jack-launcher.jar 和 jack-server-4.11.ALPHA.jar 這兩個(gè)文件根據(jù)你的prebuilts/sdk/tools 目錄下的文件名而定)
試過1月幌、2碍讯、3,大概率3解決的扯躺,為什么用自行下載的openJDK1.8不行捉兴,原因還不知道,若有大神知道歡迎留言录语。
* #### Q2:timeout
Connection to the Jack server timeout, retrying with debug.Hostname was NOT found in DNS cache
Connection to the Jack server timeout, retrying with debug
- Hostname was NOT found in DNS cache
- Trying 127.0.0.1...
- Connected to localhost (127.0.0.1)port 8076 (#0)
- successfully set certificate verify locations:
- CAfile: /root/.jack-server/server.pem
CApath: /etc/ssl/certs - SSLv3, TLS handshake, Client hello (1):
} [data not shown] - Operation timed out after 0 milliseconds with 0 out of 0 bytes received
- Closing connection 0
Building with Jack:...r_intermediates/with-local/classes.dex
ninja: build stopped: subcommand failed.
#### R2:
`sudo ufw disable` 關(guān)閉防火墻
`sudo git config --global http.sslVerify false` 關(guān)閉ssl校驗(yàn)
然后重新make
* #### Q3:Jack server OOM
Out of memory error ...ninja: build stopped: subcommand failed.
17:56:49 ninja failed with: exit status 1
#### R3:
`free -h`看一下內(nèi)存情況倍啥,內(nèi)存不夠的話設(shè)置一下,執(zhí)行一下:
`export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"`
如果`free -h`看到cache過大澎埠,可以執(zhí)行`sudo sh -c "echo 1 > /proc/sys/vm/drop_caches"`再看看內(nèi)存情況虽缕,應(yīng)該就變小了,再編譯看看蒲稳,應(yīng)該就好了,如果還不行氮趋,試試設(shè)置大一點(diǎn)的swap分區(qū)
* ####Q4:磁盤空間不足
trace write error:write out/build.trace.gz:no space left on device
low disk space on home
R4:執(zhí)行`df /home`查看磁盤使用清空伍派。
刪除大文件
參考:
https://stackoverflow.com/questions/67363030/rebuild-android-code-with-error-ssl-error-when-connecting-to-the-jack-server-t
https://copyfuture.com/blogs-details/20211204042512182U
https://blog.csdn.net/hongmao6/article/details/119822374https://blog.csdn.net/haijiaoningxia/article/details/102561765