上周托朋友在Amazon上买了一台 Nexus7 这周就能到手

再到手之前照例要做功课,其实买来之前就已经研究过很久了,当时犹豫是要Ipad mini还是搞Nexus7, 只有又一次路过Yodubashi实际摸了摸mini之后,感觉还是来个实用的有乐趣设备吧,能拿到完整source code对我这种靠Android吃饭的人来说是很巨大的吸引力啊。。。于是。。搞了!

既然订单下了,那就要开始搞source code和编译了。其实编译环境完全没有压力,我有以前工作用的完整的ubuntu虚拟机编译环境,但是这次我觉得可以搞一下Mac原生的编译环境。。AOSP对Mac的支持还是很友好的,不像某些无良公司。。。完全没有Mac的编译支持!

决定了那开始下代码搞起 先按照Android官网的配置搞定大概的编译环境,很简单不多说,网站列一下

  • http://source.android.com/source/initializing.html

然后开始下载代码(我尝试过使用打了tag的4.1.2分支和4.2分支都失败了。。最后都是用master编过的。。所以我劝大家如果要搞的话安安稳稳的用master吧。。。)

  • repo init -u https://android.googlesource.com/platform/manifest
  • repo sync -j8

 

12-21 ** FIX **
还需要去网站下载二进制驱动包打入source中,下载地址:
https://developers.google.com/android/nexus/drivers#grouperjop40c
否则会出现无法启动的情况。。。

之后就是常规编译步骤了

  • . ./build/envsetup.sh
  • lunch full_grouper-userdebug
  • make all -j8 (如果不想用apple llvm编译的话 可以使用 make CC=”gcc-apple-4.2″ CXX=”g++-apple-4.2″ -j8)

我的编译选项的输出如下:

 lunch full_grouper-userdebug  
============================================  
PLATFORM_VERSION_CODENAME=AOSP 
PLATFORM_VERSION=4.2.42.42.42 
TARGET_PRODUCT=full_grouper 
TARGET_BUILD_VARIANT=userdebug 
TARGET_BUILD_TYPE=release 
TARGET_BUILD_APPS= 
TARGET_ARCH=arm 
TARGET_ARCH_VARIANT=armv7-a-neon 
HOST_ARCH=x86 HOST_OS=darwin 
HOST_OS_EXTRA=Darwin-12.2.0-x86_64-i386-64bit 
HOST_BUILD_TYPE=release BUILD_ID=JB_MR1 OUT_DIR=out 
============================================= 

需要注意的是 如果你使用10.6以上的Mac版本(现在使用10.6以下的也不多了吧。。。) 需要先export一个环境变量

 build/core/combo/HOST_darwin-x86.mk:62: 
**************************************************** 
* build/core/combo/HOST_darwin-x86.mk:63: 
* Cannot find SDK 10.6 at 
*    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk 
*    build/core/combo/HOST_darwin-x86.mk:65: 
* If you wish to build using higher version of SDK, build/core/combo/HOST_darwin-x86.mk:66: 
* try setting BUILD_MAC_SDK_EXPERIMENTAL=1 before build/core/combo/HOST_darwin-x86.mk:67: 
* rerunning this command build/core/combo/HOST_darwin-x86.mk:69: 
***************************************************** 
build/core/combo/HOST_darwin-x86.mk:70: 
*** Stop.. Stop. 

按照提示

  • export BUILD_MAC_SDK_EXPERIMENTAL=1

然后就可以开始正常编译 编译完成后可以在$OUT目录找到生成的img文件 我的out目录的ll如下:

 total 823584 
-rw-r--r-- 1 edison staff 22 Nov 15 10:17 android-info.txt 
-rw-r--r-- 1 edison staff 5113856 Nov 15 11:05 boot.img 
-rw-r--r-- 1 edison staff 25701 Nov 15 11:49 clean_steps.mk 
drwxr-xr-x 2 edison staff 68 Nov 15 10:16 data 
-rw-r--r-- 1 edison staff 113699883 Nov 15 11:52 full_grouper-ota-eng.edison.zip 
-rw-r--r-- 1 edison staff 44690 Nov 15 11:15 installed-files.txt 
-rw-r--r-- 1 edison staff 4871932 Nov 15 10:41 kernel 
drwxr-xr-x 12 edison staff 510 Nov 15 11:15 obj 
-rw-r--r-- 1 edison staff 602 Nov 15 11:49 previous_build_config.mk 
-rw-r--r-- 1 edison staff 766760 Nov 15 11:05 ramdisk-recovery.img 
-rw-r--r-- 1 edison staff 237689 Nov 15 11:05 ramdisk.img 
drwxr-xr-x 3 edison staff 102 Nov 15 11:05 recovery 
-rw-r--r-- 1 edison staff 5642240 Nov 15 11:05 recovery.img 
drwxr-xr-x 8 edison staff 816 Nov 15 11:05 root 
drwxr-xr-x 4 edison staff 170 Nov 15 11:05 symbols 
drwxr-xr-x 13 edison staff 476 Nov 15 11:11 system 
-rw-r--r-- 1 edison staff 184454092 Nov 15 11:15 system.img 
-rw-r--r-- 1 edison staff 106788356 Nov 15 11:05 userdata.img 

其中的full_grouper-ota-eng.edison.zip 是用otapackage编出来的 暂时还没搞明白用途。。。。

  • make otapackage -j8

我使用master分支 基本都是一次编过 没有任何编译错误 但是使用打了tag的分支 没有一次能顺利编过的。。。。

好了 先写这些 等拿到了nexus7 再继续写烧机的经过吧