001@ubuntu 18无法编译Android 7/8问题

 

android7/8 默认启用jack-server, 对代码进行预编译和处理,加快系统编译和构建,弊端是同一台机器不允许多用户同时编译,

经常出现端口冲突,内存不足和溢出现象<android 10之后该功能默认被禁用了>。

另外ubuntu系统默认开启了自动升级功能,因此默认会升级相关软件包或依赖包,从而出现无法编译代码问题。

主要问题如下:

ubuntu 16.04     Linux 4.15.0-142-generic    gcc 5.4.x

1)java 8u292  <1.8.0_292>  无法编译android7/8,错误显示jack-server服务端口(8086/8087)被占用,修改相关端口,重启服务,

此时服务无法开启<即使卸载应用,重新安装>,查看dump显示端口已经被重新获取到,但依旧无法重启服务,原因还是端口被占用。

2)java 8u282 <1.8.0_282> 及早期版本会在同机多人编译Android 版本时,会出现端口冲突,但只要修改不同的端口,即可正常开启jack-server,不影响编译。

 

ubuntu 18.04   Linux 5.4.0-70-generic     gcc 7.5.x

1)java 8u292   在没有同机多人编译android时,jack-server 服务可正常开启。

2)该版本编译错误主要集中在

flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertioncnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.Aborted (core dumped),

但一般只要执行如下命令即可编译:  export  LC_ALL=C

 

3)在2)的基础上编译通过后,会出现新的问题:

 3.1)在编译android 7/8代码时,目前出现编译bootloader无法开机现象<Lily和L2系列都出现了类似问题>,更换早期版本发布的emmc_appsboot.mbn文件即可开机<待确认是哪个工具包导致的>

 

需要注意:

1)在编译android 7/8代码时,尽量确保java版本不要高于 8u282。

2) 如果使用ubuntu 18.04及其更高linux版本编译android 7/8及其更低android版本时,注意gcc版本不要高于 7.x

 2.1) 不建议使用ubuntu20.x及其以上版本, 之前有测试过无法编译modem<adsp和boot模块无法编译,高通源代码会去匹配linux版本,代码自身不带20.x相关的镜像>

3)必要的时候可以关闭linux自动更新功能

 

附:

1)官方关于java 8u292更新信息:<安全漏洞修复等>

https://www.linuxcompatible.org/story/rhsa2021144401-moderate-openjdk-8u292-security-update-for-portable-linux-builds/

 

2)openjdk-8u282 可以自行下载

apt install 命令安装的jdk默认路径在: /usr/lib/jvm/,  因此将如上包解压后放到: /usr/lib/jvm/下,

$ sudo tar zxvf java-8-openjdk-amd64.tar.gz  -C  /usr/lib/jvm/  &&  cd /usr/lib/jvm/  

$ sudo rm -r java-1.8.0-openjdk-amd64 && sudo ln -s java-8-openjdk-amd64  java-1.8.0-openjdk-amd64 

 

如果默认路径不在/usr/lib/jvm/下,请先查找对应的实际安装路径,可借助 which java获取相关的执行路径和安装路径

usr:~$ which java

/usr/bin/java

usr:~$ ls -la /usr/bin/java

lrwxrwxrwx 1 root root 22 Oct 30  2017 /usr/bin/java -> /etc/alternatives/java

usr:~$ ls -la /etc/alternatives/java

lrwxrwxrwx 1 root root 46 Nov  6  2017 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值