termux编译android源码-记得编译一次Android源码

前言:这已经是第二次编译Android源码了,因为距离第一次编译Android源码已经有很长一段时间了,所以整理了一些编译源码的命令以及编译过程中遇到问题的解决方法忘记了,需要重新查找相关资料,这样就变得有点不太有效了,所以写这篇文章来记录一下Android源码的编译方法以及编译时遇到的问题。

编译前计划

工欲善其事,必先利其器。在编译源码之前,需要配置一些相关的环境。 需要规划以下几点

我编译源码时使用的是Ubuntu 16.04系统。 您可以自行搜索Ubuntu 16.04的安装以及Java环境的配置。 这里介绍一下编译源码时所需依赖的安装方法。 您可以使用以下命令。 安装


sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib 
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential  
sudo apt-get install zip curl zlib1g-dev gcc-multilib
sudo apt-get install libc6-dev-i386 
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev 
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache

同步源代码

这里推荐复旦大学开源软件镜像站进行源代码同步。 下载速度确实很快。 复旦大学开源软件镜像站提供了两种源代码同步方法。 我用的是第一种方法。 看来这些同步的源码都是最新的Android源码。 第一种同步源码的方法如下

下载并安装 repo 工具


mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
## 如果上述 URL 不可访问,可以用下面的:
## curl https://storage-googleapis.proxy.ustclug.org/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

termux编译android源码-记得编译一次Android源码

同步源代码


wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar
cd aosp   # 解压得到的 AOSP 工程目录
# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
repo sync # 正常同步一遍即可得到完整目录
# 或 repo sync -l 仅checkout代码

注意:这里执行reposync时可能会出现以下错误


error: .repo/manifests/: contains uncommitted changes

这时我们在搜索引擎中搜索这个错误,大部分的答案如下

第一个 cd.repo/manifests

然后执行Gitstash和gitclean-fd

然后reposync就可以通过

然而,这个答案对我来说不起作用,经过一番努力,我终于找到了解决这个错误的方法,执行以下命令


git config core.filemode false
# 加入忽略文件权限的配置

执行reposync后,同步成功。同步过程中可能会遇到如下错误


error:Exited sync due to fetch errors
解决办法就是再执行一次repo sync或 repo sync -f 命令。

编译源代码

进入解压后的aosp文件夹,执行以下命令


source build/envsetup.sh

以下是执行命令后的结果

termux编译android源码-记得编译一次Android源码

可以看出这个命令是包含一些脚本文件,然后执行命令


lunch

执行后结果如下

这时我们只需要输入对应的序号即可指定编译目标的格式。 此时输入序列号‘1’,编译后的目标格式为aosp_arm-eng。 所谓编译目标就是在设备上运行什么样的镜像。下面将介绍编译目标格式。 编译后的目标格式为BUILD-BUILDTYPEtermux编译android源码,BUILD为

BUILD是指具体功能组合的具体名称,即编译后的镜像可以运行在哪个环境中。其中,aosp(AndroidOpenSourceProject)代表Android开源项目; arm表示系统运行在arm框架的处理器上,arm64是指64位arm架构; 处理器,x86表示x86架构的处理器;

构建类型是

termux编译android源码-记得编译一次Android源码

BUILDTYPE是指编译的类型,一般有三种: -user:表示这是编译好的系统镜像,可以用来很快发布版本到市场,其权限受到限制(例如没有root权限) 、无年dedug等)-userdebug:根据用户版本,开放root权限和debug权限。 -eng:代表engineer,即所谓的开发工程师版本,拥有最大的权限(root等),据悉还自带了很多debug工具

了解了编译目标格式后,我们就可以根据自己的需要输入对应的序列号了。 如果你打算编译源代码并在笔记本电脑上运行,建议选择序列号“5”进行编译,因为运行时会快很多。

开始编译

输入以下命令开始编译


make -j8

注意:这里-j8代表启用编译的线程数。 参与编译的线程越多越好。 一般是根据你机器的杯数核心来确定:核心*2,是当前CPU核心的两倍。 比如我现在的电脑是四核四线程termux编译android源码,那么根据公式,编译最快的可以是make -j8(通过cat /proc/cpuinfo查看相关cpu信息)。

如果编译期间没有错误,您应该在几个小时后看到以下输出


make completed successfully

termux编译android源码-记得编译一次Android源码

那么恭喜你已经完成了Android源代码编译。

运行模拟器

如果编译后立即运行模拟器,可以使用以下命令运行模拟器

emulator

否则,运行以下命令


source build/envsetup.sh
lunch
(选择刚才你设置的目标版本,比如这里了我选择的是5)
emulator

看下面,我这次编译后运行的模拟器

结论

源码编译的时候还是存在一些坑。 本文的目的是让你在编译源代码时免遭陷阱,节省时间去做更有意义的事情。 至此,Android源码已经编译成功。 借助Android源码,可以更深入地学习Android。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 termux编译android源码-记得编译一次Android源码 https://www.wkzy.net/game/166435.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务