1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 编译Android系统源码--搭建环境

编译Android系统源码--搭建环境

时间:2021-01-18 19:26:24

相关推荐

编译Android系统源码--搭建环境

下载Ubantu14

Google官方建议使用Ubuntu 14 下载路径

双系统安装参考

下载VMware

建议:VMware Workstation 16 Pro 下载路径

下载Android系统源码

1.Android 官方下载源代码

下载Lunix版Android Studio

下载路径

2.使用初始化包(建议)

初始化包每月都会进行更新,由于首次同步需要下载约 30GB 数据,如果上面的方法,过程中任何网络故障都可能造成同步失败,我第一次是使用官方的方法,失败过一次。后来都是用这个方法。

下载 https://mirrors.tuna./aosp-monthly/aosp-latest.tar,下载完成后记得根据 checksum.txt 的内容校验一下。

由于所有代码都是从隐藏的 .repo 目录中 checkout 出来的,所以我们只保留了 .repo 目录,下载后解压 再 repo sync 一遍即可得到完整的目录。

使用方法如下:

wget -c https://mirrors.tuna./aosp-monthly/aosp-latest.tar # 下载初始化包tar xf aosp-latest.tarcd AOSP # 解压得到的 AOSP 工程目录# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录repo init -u https://aosp.tuna./platform/manifest -b android-8.0.1_r1 # 可选命令,指定版本,如果未指定,则使用最新的版本repo sync # 正常同步一遍即可得到完整目录# 或 repo sync -l 仅checkout代码

Android各版本列表:https://source./setup/start/build-numbers.html#source-code-tags-and-builds

Ubantu安装Java - openJDK编译Android系统必须使用openJDK)

首先要查看系统是否安装 Java ,执行命令 “java -version”

首先要安装 java 的 JRE 执行 “sudo apt install default-jre -y”,后边加上 “-y” 表示安装过程默认为同意。

要安装 JDK ,要实行的命令是 “sudo apt install default-jdk -y”,然后就是等待了。

然后就是查询 JDK 是否安装成功,执行 “java -version”,到此 Java 就安装完成了,当然了,采用的是最简单的 apt 安装,还有一种就是采用源码安装,如果想要采用此方式的话,需要去官网下载最新的版本,这里就不介绍了。

下面总结下在Ubuntu14 上安装openJDK7

1、如果你直接在Ubuntu下执行

sudo apt-get install openjdk-7-jdk -y

若发现无法下载,通过百度了解,Ubuntu18 没有了openJDK7,这样的话,如何才能安装到openJDK7呢,通过百度参考,得知需要如下操作:

sudo add-apt-repository ppa:openjdk-r/ppa //更新下载链接sudo apt-get update sudo apt-get install openjdk-7-jdk -y

这个时候便可以下载openJDK7 了。

卸载 openjdksudo apt-get remove openjdk*

Ubantu安装Java - 源码安装(oracle版java不能用于编译Android系统)

参考链接

jdk7和jre7的下载地址

下载完成后使用 :tar -zxvf 文件名 解压。我解压在了 /opt/java/ 下。解压完成后,会生成 jdk 和 jre 对应文件夹。

设置环境变量

sudo gedit /etc/profile

在文件末尾新添加如下内容:export JAVA_HOME=/opt/java/jdk1.7.0_80export JRE_HOME=/opt/java/jdk1.7.0_80export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${PATH}:${JAVA_HOME}/bin:${JRE_HOME}/bin

切换java版本

将我们安装的 jdk 加入 java 选择单。

sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.7.0_80/bin/java 300

sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.7.0_80/bin/javac 300

sudo update-alternatives --install /usr/bin/jar jar /opt/java/jdk1.7.0_80/bin/jar 300

sudo update-alternatives --install /usr/bin/javah javah /opt/java/jdk1.7.0_80/bin/javah 300

sudo update-alternatives --install /usr/bin/javap javap /opt/java/jdk1.7.0_80/bin/javap 300

切换默认使用的版本

sudo update-alternatives --config java sudo update-alternatives --config javac

sudo update-alternatives --config java 的示例zhangsubantu@zhangsubantu-ThinkCentre-E73:~$ sudo update-alternatives --config java 有 2 个候选项可用于替换 java (提供 /usr/bin/java)。选择 路径 优先级 状态------------------------------------------------------------* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111自动模式1 /opt/java/jdk1.7.0_80/bin/java300 手动模式2 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111手动模式要维持当前值[*]请按<回车键>,或者键入选择的编号:1update-alternatives: 使用 /opt/java/jdk1.7.0_80/bin/java 来在手动模式中提供 /usr/bin/java (java)zhangsubantu@zhangsubantu-ThinkCentre-E73:~$

Ubantu安装Git

git :使用repo工具的时候会用到git,git并没有在Ubuntu中预装,所以需要事先安装git,使用命令:

sudo apt-get install git -y

安装完成之后,需要对git进行配置,设置git的电子邮件和用户名。

git config --global user.email "zhangshuai9511@"git config --global user.name "zhangs"

Ubantu安装Python2.7(废弃)

ubuntu安装 python2.7(参考网址)

/post/how-to-install-pip-on-ubuntu-18.04/

首先使用以下命令更新包列表:

sudo apt-get update

然后安装python2.7:

sudo apt-get install python2.7 -ysudo apt update

安装python2.7 pip

sudo apt install python-pip -ypip install --upgrade pip

Ubantu安装Python3.6.x(Repo工具要)

安装参考链接

参考链接

参考链接2

Ubantu安装所需的软件包 (Ubuntu 14)

搭建开发环境( 64 位版本的 Ubuntu)

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

参考链接

~~ Ubantu安装所需的软件包 (Ubuntu 18.04)~~

搭建开发环境( 64 位版本的 Ubuntu)

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

参考链接

Ubantu安装curl

官方一点的说法就是开源的文件传输工具。类似迅雷,或者wget(这个没听说过?)。其实这个工具可以用wget来代替。。。。Ubuntu在默认的情况下是不安装curl的,所以我们需要自己动手安装:

sudo apt-get install curl -y

Ubantu安装Repo

参考链接

Repo 是一款工具,可让您在 Android 环境中更轻松地使用 Git。

要安装 Repo,请执行以下操作:

确保主目录下有一个 bin/ 目录,并且该目录包含在路径中:

mkdir ~/binPATH=~/bin:$PATH

下载 Repo 工具,并确保它可执行:

Google原版curl /git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

清华源镜像版curl https://mirrors.tuna./git/git-repo > ~/bin/repochmod a+x ~/bin/repo

初始化 Repo 客户端

安装 Repo 后,设置您的客户端以访问 Android 源代码代码库:

创建一个空目录来存放您的工作文件。如果您使用的是 MacOS,必须在区分大小写的文件系统中创建该目录。为其指定一个您喜欢的任意名称:

mkdir WORKING_DIRECTORYcd WORKING_DIRECTORY

使用您的真实姓名和电子邮件地址配置 Git。要使用 Gerrit 代码审核工具,您需要一个与已注册的 Google 帐号关联的电子邮件地址。确保这是您可以接收邮件的有效地址。您在此处提供的姓名将显示在您提交的代码的提供方信息中。

git config --global user.name "zhangs"git config --global user.email "zhangshuai9511@"

运行 repo init 以获取最新版本的 Repo 及其最近的所有错误更正内容。您必须为清单指定一个网址,该网址用于指定 Android 源代码中包含的各个代码库将位于工作目录中的什么位置。

Google原版repo init -u /platform/manifest

清华源镜像版repo init -u https://mirrors.tuna./git/AOSP/platform/manifest

要对“master”以外的分支进行校验,请使用 -b 来指定相应分支。要查看分支列表,请参阅源代码标记和版本。

repo init -u https://mirrors.tuna./git/AOSP/platform/manifest -b android-4.0.1_r1

初始化成功后,系统将显示一条消息,告诉您 Repo 已在工作目录中完成初始化。客户端目录中现在应包含一个 .repo 目录,清单等文件将保存在该目录下。

使用清华源 镜像站 获取安卓系统源码

参考链接

首次下载代码时 需使用初始化包进行 https://mirrors.tuna./help/AOSP/

wget -c https://mirrors.tuna./aosp-monthly/aosp-latest.tar # 下载初始化包tar xf aosp-latest.tarcd AOSP # 解压得到的 AOSP 工程目录# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录# 运行 repo init 以获取最新版本的 Repo 及其最近的所有错误更正内容。您必须为清单指定一个网址,该网址用于指定 Android 源代码中包含的各个代码库将位于工作目录中的什么位置。 repo init -u https://aosp.tuna./platform/manifestrepo init -u https://aosp.tuna./platform/manifest -b android-6.0.1_r78 # 可选命令,指定版本,如果未指定,则使用最新的版本repo sync # 正常同步一遍即可得到完整目录# 或 repo sync -l 仅checkout代码(这种方式比较快,不会fetch最新的远程仓库,也就是如果我下载的是0101.tar,则最新的修改就到这天,之后至今天的修改,不同步.)# 如果不加 -l 选项, 则更新本地仓库为最新上百G了.不管repo sync结果如何 最好走一遍

https://mirrors.tuna./aosp-monthly/aosp-latest.tarhttps://mirrors.tuna./aosp-monthly/aosp-latest.tar.md5# 如果repo sync操作出现源代码被改动提示可以用以下命令修复repo sync -d# 将所有git 仓库的HEAD重置为manifest文件的指定版本repo forall -c 'git reset --hard' # Remove all working directory (and staged) changes.repo forall -c 'git clean -f -d'# Clean untracked files

参考链接

参考链接

版本号列表

同步出现如下错误error: .repo/repo/: contains uncommitted changes进入相关目录commit一次,然后pull更新一下即可。

切换AOSP分支

# 进入Repo目录,查看所有分支cd .repo/manifestsgit branch -a# 如果像我一样使用repo sync -l选项同步, 会发现分支最新只到android-9.0# 查看分支列表cd .repo/manifestsgit branch -av

# 将repo配置重新指定为相关版本repo init -u https://aosp.tuna./platform/manifest --repo-url=https://mirrors.tuna./git/git-repo/ -b android-6.0.1_r78# 切换分支repo init -b android-6.0.1_r78repo init -b android-7.1.2_r28# rm -rf有个特性不会删除隐藏目录,切换版本操作也就是只需要保留.repo目录rm -rf *#先同步一遍repo sync# 再只检出即可repo sync -c -l -j4-c 或者--current-branch表示只拉取当前分支代码,坑爹啊,我在init指定了分支,同步的时候,你却悄悄给我拉些没用的。--no-tags 不拉取tags,tag虽然不大,但架不住多--no-clone-bundle 不使用clone.bundle,clone.bundle是git bundle一样的打包文件,使用bundle文件可以做cdn下载的分流,cdn听上去不错,但是如果cdn到google的服务器,或者clone.bundle本来就占空间,不是很划算,所以不使用clone.bundle-f 如果sync失败,继续同步--force-sync 如果文件目录有差异,强制覆盖掉# repo sync -l 仅checkout代码# 查看分支列表cd .repo/manifestsgit branch -av# 其中分支代码也可以在这里查/bt_leo/article/details/78706608

Ubantu安装 Android Studio

https://developer./studio/install

AOSP源码目录结构

├── bionic android上实现的libc库├── bootable 存放可启动项,如recovery、bootloader等├── buildandroid编译系统所用到的make文件及其它工具├── cts android兼容性测试├── dalvik dalvik虚拟机├── development 与开发相关的一些东西├── device 存放需要适配的设备信息├── external 第三方库├── frameworks framework部分├── hardware 硬件相关代码├── kernel kernel相关代码├── libcore android上实现的Java基础库├── Makefile├── ndk├── out 编译输出目录├── packages 包含系统应用、壁纸应用、内容提供者、输入法等├── prebuilt 预编译好的工具├── sdk sdk相关内容├── system 操作系统层次的一些可执行程序和配置文件├── u-boot 用于引导linux启动的u-boot└── vendor 存放与厂商相关的信息,也可粗放需要适配的设备信息

构建安卓系统

参考链接

参考链接2

OpenJDK已安装构建所需的Ubantu14环境包已安装

设置编译环境

# 跳过CCLANG的一个不兼容选项,博主实际编译也遇到过# 如果不修改的话会在编译libart.so的时候error停下。修改 art/build/mon_build.mk 文件,定位到77行将:ART_HOST_CLANG := true改为:ART_HOST_CLANG := falseeg.# Host.ART_HOST_CLANG := falseifneq ($(WITHOUT_HOST_CLANG),true)# By default, host builds use clang for better warnings.ART_HOST_CLANG := true # 改为 ART_HOST_CLANG := falseendif # 设置高速编译启用标志位(占硬盘,空间小可以不执行,空间换时间)echo export USE_CCACHE=1 >> ~/.bashrc/opt/aosp/prebuilts/misc/linux-x86/ccache/ccache -M 50G

开始构建

sudo make clean

导入编译环境

source /opt/aosp/build/envsetup.sh

设置编译选项

lunch

编译7.1.2系统前

export JACK_JAR=./out/host/linux-x86/framework/jack.jar

# 开干,-j参数为编译线程数,幸运的话睡一觉起来就OK啦。sudo make -j8# 一键设置环境变量(该命令由build/envsetup.sh导入)set_stuff_for_environment# 进入安卓源码编译生成目录cd out/target/product/generic# 启动模拟器emulator

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