Ubuntu18.04系统编译android源码环境配置
1. 前言
我们做andorid系统开发,肯定时刻与源码打交到,特别是做新项目时,最重要的事情就是下载源码,然后配置环境编译,假如你的电脑是刚重装系统过,一个全新的开发环境,那么首要解决的事情就是完善好andorid源码编译的环境,你前期工作准备好的话,就可以减少在编译过程中频繁报错的次数。
关于源码编译环境可以参考官网: 建立构建环境 | Android 开源项目 | Android Open Source Project
2. 项目情况
本人是借用的一台全新安装的Ubuntu 18.04操作系统的电脑,重新下载一份Android 10项目代码,接下来就来准备前期工作。
2.1 安装所需的程序包(Ubuntu的18.04)
在终端命名安装:
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
2.2 安装和配置工作中常用的包
一行一行的执行命令安装
git config --global core.editor vim
git config --global credential.helper store
sudo apt-get update
sudo apt install python libssl-dev python-crypto samba openssh-server libncurses5 libncurses5:i386 gitk net-tools flameshot vim ccache
sudo usermod -aG plugdev $LOGNAME
2.3 源码编译初始化
接下来进入到项目代码中,熟悉的命令:
1. source build/envsetup.sh
2. lunch xxx
3. make -j16
接下来就是编译开始..........
然后你的工作就来了,新电脑新环境,源码编译依赖的环境肯定没有安装全,或者依赖工具的版本不匹配,导致一直编译不过...... 但是不要心态炸裂,遇见什么问题就解决什么问题
3. 编译报错汇总
编译过程中,本人遇到过如下报错:
错误1:
【报错】 fatal error: openssl/名单.h: No such file or directory。
【解决方案】 就是没有安装libssl-dev~ sudo apt-get install libssl-dev 错误2:
【报错】:ImportError: No module named Crypto.Signature
【解决方案】: sudo pip3 install pycrypto 错误3:【报错】:error while loading shared libraries: libncurses.so.5
【解决方案】: sudo apt-get install libncurses5 libncurses5:i386错误4:
【报错】编译过程中:
******************************
You have tried to change the API from what has been previously approved.To make these errors go away, you have two choices:1. You can add '@hide' javadoc comments to the methods, etc. listed in theerrors above.2. You can update current.txt by executing the following command:make android.test.mock.docs.system-update-current-apiTo submit the revised current.txt to the main Android repository,you will need approval.
******************************
【解决方案】:根据第二条提示: make android.test.mock.docs.system-update-current-api错误5:
【报错】:/bin/bash: bison: command not found
【报错】: /bin/bash: xsltproc: command not found
【报错】:/bin/bash: flex: command not found
【报错】:/bin/bash: gcc: command not found等等同类错误【解决方案】:下文会说明
特别是第5类错误,我们可以在单独安装一下 sudo apt-get install xxx
但是呢,每次编译一下就报个错,你得停下来解决了,然后在重新编译验证,而且第一次编译时间本来就很长,着实很搞人心态。 那有没有办法解决呢?
4. 自检查环境
其实在第一次Android源码编译之前就可以大致检查下编译环境配置是否ok?
在你执行source build/envsetup.sh lunch xxx 命令后,终端会打印,如下:
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-2a
TARGET_CPU_VARIANT=cortex-a75
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv8-2a
TARGET_2ND_CPU_VARIANT=cortex-a55
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-5.15.0-46-generic-x86_64-Ubuntu-18.04.3-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
HOST_PYTHON_VERSION= 找不到文件
BUILD_ID=QP1A.190711.020
OUT_DIR=out
而且我上面的lunch后中,还有 HOST_PYTHON_VERSION= 找不到文件 提示, 这个就是python找不到 , 那么就是提示你要去安装python的环境
也会还有其他问题报错(根据具体项目会有差异),如下:
/bin/sh: 1.cc not found
recipe for target 'scripts/basic/fixdep' failed
recipe for target 'sub_make' failed
这个报错就提示你要去安装 gcc ,但是你安装的时候,提示你会有依赖,无法安装成功
怎么解决呢?下文会解决方法
对比配置ok后,lunch后成功执行完成的提示:
5. 最优解决方案
对于编译报错停止后,通过log, 我们肯定是缺什么就在去安装什么,比如当你看到 fatal error: zlib.h: No such file or directory 这个报错时,你的第一反应就是单独去安装zlib1g-dev : sudo apt-get install zlib1g-dev 一般情况下会有依赖,导致你安装不成功
这时你需要安装aptitude
1. sudo apt-get install aptitude
2. sudo aptitude install zlib1g-dev
接下来就如图下面选择:第一个选择n 第二个选择 Y
aptitude与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具,与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些。aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。
也就是说当你安装么某个特定包的时候,出现依赖导致安装不成功,这个时候aptitude 就派上用场了,它的优点就是自动帮你解除依赖关系,非常省心地正常安装。
顺便提及一下其他 aptitude 的命令:
命令 |
作用 |
aptitude update |
更新可用的包列表 |
aptitude safe-upgrade |
执行一次安全的升级 |
aptitude full-upgrade |
将系统升级到新的发行版 |
aptitude install pkgname |
安装包 |
aptitude remove pkgname |
删除包 |
aptitude purge pkgname |
删除包及其配置文件 |
aptitude search string |
搜索包 |
aptitude show pkgname |
显示包的详细信息 |
aptitude clean |
删除下载的包文件 |
aptitude autoclean |
仅删除过期的包文件 |
6. 总结
在新电脑环境第一次编译andorid源码的时候,肯定会遇到很多编译问题,也需要我们有点耐心去解决问题, 所以前期尽可能的配置好编译环境,当你在第一次执行全部安装包命令(第二个步骤中比较长的命令)的时候,如果出现了某些有依赖的包,导致安装不成功的,一定要留下心,先记录下来。
接下来,在第4个步骤上,自检查下编译环境是否都正常?
然后把aptitude 安装上,接下来去单独安装有依赖的包,因为你前期不解决这些问题,在编译过程中肯定会遇上的,又来回折腾。
说了这么多,就是要把前期编译环境尽肯能配置完整一点,便于节省时间编出大版本。
Ubuntu18.04系统编译android源码环境配置相关推荐
- android .9编译,在Ubuntu 9.04下编译Android源码
一直都是刷官方的版本,准备自己编译一下刷机. 首先是下载,Android的源码是托管在Linux Kernel的源码站点,所以版本工具是git.关于git的使用和安装请见我的另一篇文章<在Ubu ...
- Android源码环境搭建(aosp Ubuntu 16.04)
Android源码环境搭建(aosp Ubuntu 16.04) FrameWork入门课视频链接:https://edu.csdn.net/course/detail/30298 FrameWork ...
- Android:源码环境编译自定义的APP到ROM(System Image)中
有时候我们需要在源码环境中增加自己的应用或模块,随ROM一起发布. 下面讲述相关步骤: 1. 首先可以在SDK环境下进行编码设计(如果你的APP不涉及到emulator无法模拟的硬件的话) 也可以参考 ...
- ubuntu 20.04编译Android源码
一直以来想编译android源码,趁闲编译了下,ubuntu版本:20.04,android源码版本:android-9.0.0_r30.总体还比较顺畅,中间遇到了一些报错,在文中也有记录,详情见下文 ...
- Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决
Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决 参考文章: (1)Ubuntu12.04编译Android ...
- 《深入解析Android 虚拟机》——第1章,第1.3节编译Android源码
本节书摘来自异步社区<深入解析Android 虚拟机>一书中的第1章,第1.3节编译Android源码,作者 钟世礼,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- 编译Android源码
通过参考网上的相关资料,我编译Android源码的步骤如下: 1 我的系统是Ubuntu 8.04 2 系统上必须安装以下工具(摘自网上的资料): sudo apt-get install bu ...
- (转)编译Android源码的全过程
在网上看到一篇编译android源码的文章,照着做挺行的, 通过参考网上的相关资料,我编译Android源码的步骤如下: * 1 我的系统是Ubuntu 8.04 * 2 系统上必须安装以下 ...
- ubuntu 11.10下载和编译Android源码
ubuntu 11.10下载和编译Android源码 由衷感谢网上的各个博主的文章,给了小弟我莫大的帮助.这里呢,小弟也把自己的经历记录下来,以供大家参考^^.这篇应该算是零基础.从无到有的流程介绍了 ...
最新文章
- 电子科大邹权组招聘博后、科研助理和访问学生(生物信息学方向)
- Windows IIS
- mysql数据库主从同步
- java telephony jar,android – 修改framework.jar中的java代码
- Vitaly and Night
- java 打印三维数组_Java基础第三天_数组
- Learning Video Object Segmentation from Static Images
- RM遥控器接收程序的分析
- Vegas哪个版本最好用?
- 《尚书》全文、注释及译文(2)
- 空间搜索(圆范围)中Geohash编码方案和格网编码方案对比探讨
- [应用漏洞]CVE-2015-7450 WebSphere命令执行
- java多核的利用率_java控制多核cpu的占用率
- 多线程Retry: 解释
- 华为FPGA设计设计规范
- TCL电子软件开发生活记录(更新中)
- 000898先生的留言
- 好好学习,持续学习,才能持续赚钱
- vue给url 中文参数 添加编码解码
- python处理sa雷达数据存储板_雷达数据处理和风场反演