下载Ubantu14

Google官方建议使用Ubuntu 14 下载路径
双系统安装参考

下载VMware

建议:VMware Workstation 16 Pro 下载路径

下载Android系统源码

1.Android 官方下载源代码

下载Lunix版Android Studio

下载路径

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

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

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

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

使用方法如下:

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

Android各版本列表:https://source.android.google.cn/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 了。

卸载 openjdk
sudo 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_80
export JRE_HOME=/opt/java/jdk1.7.0_80
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export 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/java                300       手动模式2            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      手动模式要维持当前值[*]请按<回车键>,或者键入选择的编号:1
update-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@163.com"
git config --global user.name "zhangs"

Ubantu安装Python2.7(废弃)

ubuntu安装 python2.7(参考网址)
https://linuxize.com/post/how-to-install-pip-on-ubuntu-18.04/

  1. 首先使用以下命令更新包列表:
sudo apt-get update
  1. 然后安装python2.7:
sudo apt-get install python2.7 -y
sudo apt update
  1. 安装python2.7 pip
sudo apt install python-pip -y
pip 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,请执行以下操作:

  1. 确保主目录下有一个 bin/ 目录,并且该目录包含在路径中:
mkdir ~/bin
PATH=~/bin:$PATH
  1. 下载 Repo 工具,并确保它可执行:
Google原版
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
清华源镜像版
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo

初始化 Repo 客户端

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

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

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

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

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

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

Google原版
repo init -u https://android.googlesource.com/platform/manifest
清华源镜像版
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

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

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

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

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

参考链接
首次下载代码时 需使用初始化包进行 https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar
cd AOSP   # 解压得到的 AOSP 工程目录
# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
# 运行 repo init 以获取最新版本的 Repo 及其最近的所有错误更正内容。您必须为清单指定一个网址,该网址用于指定 Android 源代码中包含的各个代码库将位于工作目录中的什么位置。
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r78 # 可选命令,指定版本,如果未指定,则使用最新的版本
repo sync # 正常同步一遍即可得到完整目录
# 或 repo sync -l 仅checkout代码(这种方式比较快,不会fetch最新的远程仓库,也就是如果我下载的是20190101.tar,则最新的修改就到这天,之后至今天的修改,不同步.)
# 如果不加 -l 选项, 则更新本地仓库为最新上百G了.不管repo sync结果如何 最好走一遍
https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
https://mirrors.tuna.tsinghua.edu.cn/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/manifests
git branch -a# 如果像我一样使用repo sync -l选项同步, 会发现分支最新只到android-9.0# 查看分支列表
cd .repo/manifests
git branch -av
# 将repo配置重新指定为相关版本
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ -b android-6.0.1_r78
# 切换分支
repo init -b android-6.0.1_r78
repo 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/manifests
git branch -av# 其中分支代码也可以在这里查
https://blog.csdn.net/bt_leo/article/details/78706608

Ubantu安装 Android Studio

https://developer.android.google.cn/studio/install

AOSP源码目录结构

├── bionic    android上实现的libc库
├── bootable  存放可启动项,如recovery、bootloader等
├── build     android编译系统所用到的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/Android.common_build.mk 文件,定位到77行
将:
ART_HOST_CLANG := true
改为:
ART_HOST_CLANG := falseeg.
# Host.
ART_HOST_CLANG := false
ifneq ($(WITHOUT_HOST_CLANG),true)# By default, host builds use clang for better warnings.ART_HOST_CLANG := true # 改为 ART_HOST_CLANG := false
endif # 设置高速编译启用标志位(占硬盘,空间小可以不执行,空间换时间)
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

编译Android系统源码--搭建环境相关推荐

  1. android系统源码的环境下用make来编译,Android源码编译系统入门

    做过 Android 平台开发的朋友对make,mm或make clean命令应该很熟悉,但也许大家只是熟知这些命令的作用却不知道这些命令底下有些什么原理?那么今天我就带着大家推开Android编译系 ...

  2. Win10 Linux子系统编译Android系统源码

    一.前言 听说win10合入了Linux作为一个子系统,起初只以为是类似虚拟机的实现机制,想必对性能的提高也很有限.但是稍微了解却发现是并不是虚拟机的那种机制,而是可以完全发挥Host机器的性能,这无 ...

  3. Ubuntu编译Android系统源码(msm8909_android5.1.1)

    安装工具 下载Android源码需要git,repo等工具,启动repo是Google写的一个专门用于下载Android源码的工具,主要调用了git. 科普一下git与repo的区别 Git:Git是 ...

  4. 编译Android系统源码推荐的电脑配置

    工欲善其事,必先利其器. 看到很多客户,搞Android产品开发,用的电脑配置是惨不忍睹. 这些老板脑子有坑吗... ------------ 编译Android9推荐电脑配置: 处理器:酷睿i7 5 ...

  5. Android FrameWork 学习之Android 系统源码调试

    这是很久以前访问掘金的时候 无意间看到的一个关于Android的文章,作者更细心,分阶段的将学习步骤记录在自己博客中,我觉得很有用,想作为分享同时也是留下自己知识的一些欠缺收藏起来,今后做项目的时候会 ...

  6. Android系统源码编译环境搭建(清华镜像,想编译什么版本都可以,只是有JDK和make的版本要求)

    上一次,写得有点匆忙,现在补上清华镜像源码的详细下载方法. 编译Android 5.1源代码并烧录到Nexus4(用的是清华镜像的源) 环境准备: 基本环境:ubuntu-14.04-desktop- ...

  7. ubuntu-18.04.4 Android系统源码TP1A(Android 13)下载及编译

    继上一篇博客介绍了VMware Workstation15 配置ubuntu-18.04.4,这篇主要介绍安装后环境搭建,Android源码的下载与编译.小编当前下载的是当前最新的代码,是主干分支代码 ...

  8. 02 A33 Android系统源码编译

    下载源码包,解包后进入Android-SDK/tools目录. 1 先安装dtc-master和fakeroot工具. dtc-master安装方法: 解包后,在源码目录下: make &&a ...

  9. android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试

    一,学习android系统源码下载,编译的作用 1,可以自己 DIY 自己的rom系统,从系统层面,宏观的加深理解 android系统 2,编译自己的 userdebug(原生root权限) rom, ...

最新文章

  1. LeetCode-笔记-112、路径总和
  2. 编译安装openresty+mariadb+php7
  3. Java并发编程基础与实战
  4. 如何利用MongoDB实现高性能,高可用的双活应用架构?
  5. springboot 单例_如何实现一个单例及优化
  6. android targetapi版本低,我的Android进阶之旅------Android中高低API版本兼容使用@TargetApi或者@SuppressLint(NewApi)...
  7. 阿里云centos云服务器 - 网站搭建教程
  8. x86汇编语言——基本概念
  9. 直接通过ADO操作Access数据库(修改版)
  10. java 静态变量与静态初始化块中变量的初始化顺序
  11. 【Todo】【转载】Scala中Array, List, Tuple的区别
  12. java 需要返回类型_在Java中,当一个方法不需要返回数据时返回类型必须是
  13. 关于审核被拒申诉那点事
  14. Python 实现单例模式的一些思考
  15. go应用---Time.second
  16. 安装虚拟环境和Flask
  17. mysql gitd 数据结构同步失败_mysql 5.7 gtid主从同步错误修复
  18. Unity 2D教程 | 骨骼动画:创建动画
  19. 互联网大佬们的代码水平如何?网友:刘强东95年一个晚上赚5万
  20. 领英辅助工具—领探,可突破领英的好友人脉限制

热门文章

  1. 备份sybase数据库的方法
  2. “互联网+”智慧农业-国稻种芯-万祥军:江西现代农业弯道赶超
  3. 常戴助听器有什么危害副作用
  4. 2023美赛 ICM E题 Light Pollution
  5. idea打开文件关联目录
  6. 使用人人renren-fast快速开发管理后台,并配置项目整体的网关路由
  7. 小米wifi认证取消html查看器,小米路由器设置了隐藏wifi如何取消?
  8. android网上订餐项目相关配置
  9. 迅捷FW150US无线网卡驱动安装
  10. ROS话题通信自定义msg实现发送接收(六)c++、python