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 "you@example.com"#初始化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文件解释:

<?xml version="1.0" encoding="UTF-8"?>             

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_anglerBUILDTYPE为编译类型。不同的编译类型,在编译过程中会有不同的编译配置。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干货程序员

更多相关文章

  1. android系统定制从听说到入门三
  2. Android实战技巧之二十二:Android(安卓)5.1 SDK下载与配置
  3. android 系统开机运行指定程序
  4. Android(安卓)NDK开发之旅 目录
  5. Android(安卓)架构师之路 目录
  6. Android(安卓)C语言开发系列教程目录
  7. 设计模式目录总纲
  8. Android: 向最强看齐, 反编译 愤怒的小鸟.apk
  9. 《Android高手进阶教程目录》

随机推荐

  1. 15个必知的Android开发者选项
  2. 【Android】Java回调原理并结合Android源
  3. Android:探究活动的生命周期
  4. Android使用ViewPager实现图片轮播(高度
  5. Android(安卓)App 的设计架构:MVC、MVP、M
  6. Android进阶(jni部分三)ABI
  7. android 实现从网络上抓取图片并显示在手
  8. android view statusBar 沉浸式
  9. android模块化app开发笔记-1环境搭建
  10. Android之路——第一个上线 APP项目总结