欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android源码下载和编译

程序员文章站 2022-07-12 11:48:46
...

使用Repo进行下载

如果需要学习Android源码的话,一定得需要了解Repo这个版本管理工具。 
Repo工具的使用 
https://source.android.com/source/using-repo

# 下载Repo
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
# 初始化Repo
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
# 进入Repo目录,查看所有分支
cd .repo/manifests
git branch -a
# 下载某个特定的分支
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.1.0_r7
# 也可以这样切换其他分支
repo init -b android-6.0.1_r63
# 同步Repo代码 
repo sync

AOSP各版本和分支的关系 
https://source.android.com/source/build-numbers#source-code-tags-and-builds

也可以直接使用wget -c进行断点续传进行下载

wget -c -t 0 https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
tar -vxzf aosp-latest.tar

AOSP代码目录含义

目录名 描述
abi 应用程序二进制接口
bionic C/C++运行时库,在NDK程序中很大一部分调用就是这里的程序
bootable 用于Android装载和启动程序,其中就包括bootloader和recovery。bootloader是Android中唯一在LInux内核之前执行的程序。通过这段程序可以初始化硬件,建立内存控件的映射图等,总之,bootloader就是为LInux内核准备合适的运行环境。
build 用于编译Android源代码以及建议system.img,ramdisk.img等文件的工具
cts 用于兼容性测试的工具
dalvik Dalvik虚拟机的源代码
development 高层的开发和调试工具
device 与设备相关的代码
docs 包含与Android源代码项目的文档和工具,如Dalvik虚拟机格式文档等
external 扩展工具的源代码
framworks Android框架层源代码。也就是Android SDK的源代码
hardware 硬件层接口和库
libcore Java核心库
ndk NDK相关的源代码
packages 与Android系统一同发布的应用程序的源代码
prebuilts Android在各种平台下编译之前要使用的工具
sdk 在开发环境中使用的工具,如ddms,draw9path,sdkmanager等
system Android的基本系统

编译Android源码

1 进入到AOSP目录

2 初始化编译环境 ,每次打开终端都需要

source ./build/envsetup.sh

3 选择编译目标,每次打开终端都需要

# 这里我选择的是x86体系的源码,eng(BUILD_TYPE)代表的是工程机
# 如果需要模拟器运行的话,选择x86运行速度会快一点
# 如果需要烧写到手机上,那么选择aosp_arm-eng
lunch aosp_x86-eng

BUILD_TYPE 对照表:

构建类型 用途
user 有限的访问权限,主要用于发布正式产品,没有root跟调试权限
userdebug 跟user类型差不多,但是多了root跟debug调试权限
eng 拥有各种调试工具的开发版设置,拥有root跟debug权限

4 使用make进行编译

如果之前有编译不同CPU体系的,那么需要使用 make -clobber清除之前的编译内容, 否则可能会出现错误

make -j8 # 使用8个线程进行编译

5 使用模拟器运行

emulator

Android源码下载和编译

编译后的产物

编译后会在.//out/target/product/generic_x86/目录生成一些img文件,这些img文件是可以烧写到手机中的。

有三个img比较重要,分别是system.img, ramdisk.img, userdata.img。

 

详细参考:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/     ( 清华镜像 )

                https://source.android.google.cn/source/downloading

                https://android.googlesource.com/platform/manifest  (google git)

希望能帮到各位。。。