Google官方建议使用Ubuntu 14 下载路径
双系统安装参考
建议:VMware Workstation 16 Pro 下载路径
下载路径
初始化包每月都会进行更新,由于首次同步需要下载约 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
首先要查看系统是否安装 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*
参考链接
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
将我们安装的 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:~$
git :使用repo工具的时候会用到git,git并没有在Ubuntu中预装,所以需要事先安装git,使用命令:
sudo apt-get install git -y
安装完成之后,需要对git进行配置,设置git的电子邮件和用户名。
git config --global user.email "[email protected]"
git config --global user.name "zhangs"
ubuntu安装 python2.7(参考网址)
https://linuxize.com/post/how-to-install-pip-on-ubuntu-18.04/
sudo apt-get update
sudo apt-get install python2.7 -y
sudo apt update
sudo apt install python-pip -y
pip install --upgrade pip
安装参考链接
参考链接
参考链接2
搭建开发环境( 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
参考链接
搭建开发环境( 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
参考链接
官方一点的说法就是开源的文件传输工具。类似迅雷,或者wget(这个没听说过?)。其实这个工具可以用wget来代替。。。。Ubuntu在默认的情况下是不安装curl的,所以我们需要自己动手安装:
sudo apt-get install curl -y
参考链接
Repo 是一款工具,可让您在 Android 环境中更轻松地使用 Git。
要安装 Repo,请执行以下操作:
mkdir ~/bin
PATH=~/bin:$PATH
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 "[email protected]"
运行 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更新一下即可。
# 进入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
https://developer.android.google.cn/studio/install
├── 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
设置编译环境
# 跳过CCLANG的一个不兼容选项,博主实际编译也遇到过
# 如果不修改的话会在编译libart.so的时候error停下。
修改 art/build/Android.common_build.mk 文件,定位到77行
将:
ART_HOST_CLANG := true
改为:
ART_HOST_CLANG := false
eg.
# 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