【Android Framework】Ubuntu 20.04编译Android 8源码踩坑记录

尝试在Ubuntu 20.04中编译Android 8源码,记录编译过程中踩过的坑,期望给后来的同学一些解决参考。

运行环境:Ubuntu 20.04 (非虚拟机)

编译Android版本:Android 8 源码

问题1:找不到python命令

/usr/bin/env: “python”: 没有那个文件或目录

问题原因:Android 8编译需要依赖较老的python版本(py2.7),而ubuntu20只提供了python3,所以需要我们自行安装py2并将路径关联到环境变量中。

具体解决办法:

  1. 安装python2.7:sudo apt install python2-minimal
  2. 将/usr/bin/env映射至py2.7的目录:ln -s /usr/local/python-2.7.18/bin/python /usr/bin/python

参考资料:

https://blog.csdn.net/rasiel_2019/article/details/123654672

问题2:找不到库文件libncurses.so.5

prebuilts/clang/host/linux-x86/clang-4053586/bin/clang++.real: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
[  0% 64/89441] Import includes file: out/host/linux-x86/obj/STATIC_LIBRARIES/libaapt_intermediates/import_includes

问题原因:android 8依赖的linux内核库文件较老,Ubuntu 20缺少该文件。

具体解决办法:

  1. 缺什么文件我们就去装什么文件。我这里缺少的是libncurses.so.5
  2. 一个个装太麻烦,我这里提供一个依赖较为齐全的文件命令:
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

参考资料:

https://blog.csdn.net/yinminsumeng/article/details/128642855#下载android源码

问题3:Jack server连接失败

Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore /home/cmr/.jack-server/client.jks -destkeystore /home/cmr/.jack-server/client.jks -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
Jack server failed to (re)start,try 'jack-diagnose' or see Jack server log,SSL error when connecting to the Jack server. Try 'jack-diagnose'

问题原因:Java某次更新中,将Jack Server需要的TLSv1, TLSv1.1给disable掉了

具体解决办法:

  1. 找到java.security文件:vim /etc/java-8-openjdk/security/java.security
  2. 找到该文件中的jdk.tls.disabledAlgorithms,删掉其中TLS1.0和1.1的依赖(需要root权限,否则该文件只读)
  3. 重启linux(切记,否则不生效)

在这里插入图片描述

参考资料:

https://blog.csdn.net/qq_37858386/article/details/119599118

问题4:编译报错’cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))’

FAILED: out/target/product/generic/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp 
/bin/bash -c "prebuilts/misc/linux-x86/flex/flex-2.5.39 -oout/target/product/generic/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp bootable/recovery/edify/lexer.ll"
flex-2.5.39: loadlocale.c:130:_nl_intern_locale_data: ?? 'cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' ???
Aborted (core dumped)
ninja: build stopped: subcommand failed.

解决办法:

  1. vim build/envsetup.sh
  2. 在最后一行加上:export LC_ALL=C

参考资料:

https://huaweicloud.csdn.net/64edab514165333c3076b8a3.html




在这里插入图片描述
最后,折腾了一上午总算是编译运行成功了!

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值