Android 源码笔记 #1 - 编译&烧录

由于最近工作需要 + 自己也挺感兴趣,折腾起 Android 的下层开发。

环境描述:

素材准备

上 Google 爸爸的 Android Source ,按 Establishing a Build EnvironmentDownloading the Source 做完即可,只有小坑如下:

编译

按着 Android Source 的步骤,现在终于要 Preparing to Build 啦,注意到其实还有个页面可能没看仔细——Requirements,这里有坑的:

Mac OS (Intel/x86)

  • Android 6.0 (Marshmallow) - AOSP master: Mac OS v10.10 (Yosemite) or later with Xcode 4.5.2 and Command Line Tools
  • Android 5.x (Lollipop): Mac OS v10.8 (Mountain Lion) with Xcode 4.5.2 and Command Line Tools

  • Android 4.1.x-4.3.x (Jelly Bean) - Android 4.4.x (KitKat): Mac OS v10.6 (Snow Leopard) or Mac OS X v10.7 (Lion) and Xcode 4.2 (Apple’s Developer Tools)

  • Android 1.5 (Cupcake) - Android 4.0.x (Ice Cream Sandwich): Mac OS v10.5 (Leopard) or Mac OS X v10.6 (Snow Leopard) and the Mac OS X v10.5 SDK

按这个表,Google 其实推荐 5.x 6.0 使用 4.5.2 的 Xcode 及其 SDK 来编译,然而现代 macOS 早已不支持这些老东西了:

目测一切奇怪的环境问题都可以用这个终极办法修复。

最后的最后,终于是编译啦:

$ make clobber
$ source build/envsetup.sh
$ lunch aosp_arm-eng              
$ make -j4                               

需要注意的是:

烧录

Running Build 这章没多少内容,也就一个命令有点坑:fastboot flashall -w。直接运行会抛错:error: neither -p product specified nor ANDROID_PRODUCT_OUT set。需要设置一下 img 的目录,按照提示 export ANDROID_BUILD_OUT="path/to/your/img/folder" 设置即可 (-p 参数用了没成功…大概姿势有问题)

OK,终于 Run 起来了。后续可以做进一步的调试了。

参考链接

  1. Downloading and Building - Android Source
  2. Build and Run Android from AOSP Source Code to a Nexus 7
· Android, Framework, 源码, zh-CN