1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Ubuntu18.04系统编译android源码环境配置

Ubuntu18.04系统编译android源码环境配置

时间:2021-09-03 12:23:49

相关推荐

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 vimgit config --global credential.helper storesudo apt-get updatesudo apt install python libssl-dev python-crypto samba openssh-server libncurses5 libncurses5:i386 gitk net-tools flameshot vim ccachesudo 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=releaseTARGET_ARCH=arm64TARGET_ARCH_VARIANT=armv8-2aTARGET_CPU_VARIANT=cortex-a75TARGET_2ND_ARCH=armTARGET_2ND_ARCH_VARIANT=armv8-2aTARGET_2ND_CPU_VARIANT=cortex-a55HOST_ARCH=x86_64HOST_2ND_ARCH=x86HOST_OS=linuxHOST_OS_EXTRA=Linux-5.15.0-46-generic-x86_64-Ubuntu-18.04.3-LTSHOST_CROSS_OS=windowsHOST_CROSS_ARCH=x86HOST_CROSS_2ND_ARCH=x86_64HOST_BUILD_TYPE=releaseHOST_PYTHON_VERSION= 找不到文件BUILD_ID=QP1A.190711.020OUT_DIR=out

而且我上面的lunch后中,还有 HOST_PYTHON_VERSION= 找不到文件 提示, 这个就是python找不到 , 那么就是提示你要去安装python的环境

也会还有其他问题报错(根据具体项目会有差异),如下:

/bin/sh: 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 installzlib1g-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 的命令:

6. 总结

在新电脑环境第一次编译andorid源码的时候,肯定会遇到很多编译问题,也需要我们有点耐心去解决问题, 所以前期尽可能的配置好编译环境,当你在第一次执行全部安装包命令(第二个步骤中比较长的命令)的时候,如果出现了某些有依赖的包,导致安装不成功的,一定要留下心,先记录下来。

接下来,在第4个步骤上,自检查下编译环境是否都正常?

然后把aptitude 安装上,接下来去单独安装有依赖的包,因为你前期不解决这些问题,在编译过程中肯定会遇上的,又来回折腾。

说了这么多,就是要把前期编译环境尽肯能配置完整一点,便于节省时间编出大版本。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。