android系统定制从听说到入门五

Android程序员面试宝典

android系统定制系列:

  • android系统定制从听说到入门一
  • android系统定制从听说到入门二
  • android系统定制从听说到入门三
  • android系统定制从听说到入门四
  • android系统定制从听说到入门五
  • android系统定制从听说到入门六

本文配套视频

http://www.toutiao.com/i6434633590172025346/
http://www.toutiao.com/i6434633933505167873/

OUT目录配置(可选)

ASOP代码编译以后默认会在你当前工作目录创建/out目录,编译产出的所有文件都会放在这个目录。编译完以后这个目录大小比AOSP源码还要大,如果希望自定义out目录的位置:

#export:配置环境变量
#OUT_DIR_COMMON_BASE:环境变量名,配置保存编译AOSP源码所生成文件的out目录位置。默认在AOSP源码的目录下。仅支持4.1及以后
$ export OUT_DIR_COMMON_BASE=

设置ccache缓存(可选)

开启ccache,在AOSP编译的过程中,会对C/C++代码的编译结果进行缓存。当执行了make clean命令以后,再次执行make编译的时候,可以大大提高编译速度。

$ export USE_CCACHE=1 #开启CCACHE。此配置可以提高二次全编译的速度。可以添加到.bashrc文件中,
$ export CCACHE_DIR=//.ccache #设置缓存目录的路径。也可以添加到.bashrc文件中,
$ prebuilts/misc/linux-x86/ccache/ccache -M 50G #设置缓存目录的大小。这个配置一次即可。

.bashrc是home目录下的一个脚本文件,每打开一个终端窗口,这个启动脚本里的命令就会执行,相当于开机启动。

4.2源码下载与管理

AOSP源码下载

由于国内的网络限制,以下执行的命令,有些会将访问的Google地址替换为国内的镜像网站,比如清华镜像源。镜像源:定期同步Google的AOSP代码服务器,供国内网络访问。

#1. 下载repo
#创建~/bin目录并加到环境变量
$ mkdir ~/bin
$ PATH=~/bin:$PATH
#下载repo脚本到本地并配置可执行权限
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
#清华大学提供的repo
#curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
#export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
$ chmod a+x ~/bin/repo #所有用户可执行 

#2. 初始化本地repo
#创建工作目录,用于保存下载的AOSP源码
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
#配置git账户信息,用于提交代码到Gerrit(code-review代码审查)上
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
#初始化repo,指定要下载的android源码分支名。不指定,默认下载master分支代码(最新版本代码)。执行完以后WORKING_DIRECTORY下会生成.repo目录。
$ repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r78
#清华大学提供的AOSP镜像网站
#repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r78

#3.下载,同步。会将repo所维护的服务器上对应分支的所有project的.git仓库更新下载到本地并checkout代码到WORKING_DIRECTORY目录
$ repo sync

repo与git的关系

AOSP:本质上是一堆使用git进行版本控制的project。
repo:针对AOSP大量git仓库的管理工具。可以执行批量git同步,更新,提交等操作。
原理:通过读取manifest.git里维护的manifests.xml文件当中配置的projects的git仓库地址,分支等信息执行git操作。将服务器上按照特定目录结构保存的project原封不动的同步到本地。
关系:repo基于git,让超大型的项目代码管理更有效率。

manifest.xml文件解释:






            




 





4.3源码预编译

驱动下载(可选)

如果要使用Nexus设备进行学习,则需要下载Nexus的驱动,再进行编译。驱动下载地址:https://developers.google.com/android/nexus/drivers 找到对应设备的驱动,下载到工作目录解压后为.sh结尾的脚本,执行后会将驱动安装在vendor/目录下

如果之前编译过AOSP,则需要删除所有编译结果,重新编译。
$make clobber #删除out目录下的内容。

编译AOSP

#1.初始化编译环境 source或者(.)都可以执行一个shell脚本
$ source build/envsetup.sh
$ . build/envsetup.sh

#2.选择编译目标 
$ lunch aosp_arm-eng    #模拟器
#3.开始编译 -jN:job,开多少个任务去执行编译。
$make -j4
lunch BUILD-BUILDTYPE解释:
BUILD为内部开发代码,比如Nexus 6P为aosp_angler
BUILDTYPE为编译类型。不同的编译类型,在编译过程中会有不同的编译配置。
user:类似MIUI发布的的稳定版ROM。会关闭一些调试性的配置。比如adb。
userdebug:类似MIUI发布的开发版ROM。跟user版本差不多,但是具备root,方便进行测试。
eng:内部开发版。包含开发过程中使用到的测试工具,带root。

运行编译结果

如果是模拟器,可直接运行emulator 命令。
    $ emulator

如果是硬件设备,需要进入bootloader模式将镜像文件通过fastboot烧写到设备上。

    $adb reboot bootloader                 #进入bootloader模式
    $fastboot flash system system.img       #烧写system分区
    $fastboot reboot                       #重启设备
  • 欢迎关注微信公众号、长期为您推荐优秀博文、开源项目、视频

  • 微信公众号名称:Android干货程序员

  • android系统定制从听说到入门五_第1张图片

你可能感兴趣的:(android系统定制从听说到入门五)