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源码环境配置相关推荐

  1. android .9编译,在Ubuntu 9.04下编译Android源码

    一直都是刷官方的版本,准备自己编译一下刷机. 首先是下载,Android的源码是托管在Linux Kernel的源码站点,所以版本工具是git.关于git的使用和安装请见我的另一篇文章<在Ubu ...

  2. Android源码环境搭建(aosp Ubuntu 16.04)

    Android源码环境搭建(aosp Ubuntu 16.04) FrameWork入门课视频链接:https://edu.csdn.net/course/detail/30298 FrameWork ...

  3. Android:源码环境编译自定义的APP到ROM(System Image)中

    有时候我们需要在源码环境中增加自己的应用或模块,随ROM一起发布. 下面讲述相关步骤: 1. 首先可以在SDK环境下进行编码设计(如果你的APP不涉及到emulator无法模拟的硬件的话) 也可以参考 ...

  4. ubuntu 20.04编译Android源码

    一直以来想编译android源码,趁闲编译了下,ubuntu版本:20.04,android源码版本:android-9.0.0_r30.总体还比较顺畅,中间遇到了一些报错,在文中也有记录,详情见下文 ...

  5. Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决

    Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决 参考文章: (1)Ubuntu12.04编译Android ...

  6. 《深入解析Android 虚拟机》——第1章,第1.3节编译Android源码

    本节书摘来自异步社区<深入解析Android 虚拟机>一书中的第1章,第1.3节编译Android源码,作者 钟世礼,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  7. 编译Android源码

    通过参考网上的相关资料,我编译Android源码的步骤如下: 1 我的系统是Ubuntu 8.04 2 系统上必须安装以下工具(摘自网上的资料):    sudo apt-get install bu ...

  8. (转)编译Android源码的全过程

    在网上看到一篇编译android源码的文章,照着做挺行的, 通过参考网上的相关资料,我编译Android源码的步骤如下: * 1 我的系统是Ubuntu 8.04      * 2 系统上必须安装以下 ...

  9. ubuntu 11.10下载和编译Android源码

    ubuntu 11.10下载和编译Android源码 由衷感谢网上的各个博主的文章,给了小弟我莫大的帮助.这里呢,小弟也把自己的经历记录下来,以供大家参考^^.这篇应该算是零基础.从无到有的流程介绍了 ...

最新文章

  1. 电子科大邹权组招聘博后、科研助理和访问学生(生物信息学方向)
  2. Windows IIS
  3. mysql数据库主从同步
  4. java telephony jar,android – 修改framework.jar中的java代码
  5. Vitaly and Night
  6. java 打印三维数组_Java基础第三天_数组
  7. Learning Video Object Segmentation from Static Images
  8. RM遥控器接收程序的分析
  9. Vegas哪个版本最好用?
  10. 《尚书》全文、注释及译文(2)
  11. 空间搜索(圆范围)中Geohash编码方案和格网编码方案对比探讨
  12. [应用漏洞]CVE-2015-7450 WebSphere命令执行
  13. java多核的利用率_java控制多核cpu的占用率
  14. 多线程Retry: 解释
  15. 华为FPGA设计设计规范
  16. TCL电子软件开发生活记录(更新中)
  17. 000898先生的留言
  18. 好好学习,持续学习,才能持续赚钱
  19. vue给url 中文参数 添加编码解码
  20. python处理sa雷达数据存储板_雷达数据处理和风场反演

热门文章

  1. 算法修炼之练气篇(Python版)——练气一层初期
  2. 体验1Gbps的上下行对等网络
  3. flyme os 插桩红米2 教程
  4. 即将到来的双十一,在学习投入上你准备买点啥?
  5. OpenStack OVS防火墙驱动程序
  6. 用Transformer进行图像语义分割,性能超最先进的卷积方法!
  7. html图像粒子转换动画,html5 canvas粒子动画生成图片特效
  8. spread spectrum 展频的工作原理
  9. C语言 青蛙过河问题
  10. GYM 100694A - Did he drop any good loot? (DP,背包)