烧写编译出的Android-4.0.4以及Android-4.1.2原生镜像到galaxy nexus 、Nexus 7

首先说,我做这件事情绕了太多太多的弯路,浪费了太多太多的时间……

其次说,做任何事情,照猫画虎是需要首先尝试的方法。

我希望以后我探索任何我一知半解的事物,都忘掉自己的思维定式,不要自以为是,首先要做的是把前辈的方法实践一遍。

这是一个多么普通的常识啊。

但是,对我来说为什么这么的难以想到……


一直都是以Android-2.3.4和Android-2.3.5为蓝本做实验。所以长期以来就形成了思维定式,认为烧rom用fastboot flash这个命令就可以搞定一切。

但是,在Galaxy Nexus上,不管编译的镜像文件多么的硬件,软件相匹配,用fastboot flash是永远也烧写不上去的。永远得到的只有

Device product is “tuna”

Update requires “herring”

想烧上去的方法只有一个:fastboot -w update ****.zip

把编译得到的android-info.txt,boot.img,recovery.img,system.img,userdata.img五个文件打包成zip压缩包。

这个方法在官方镜像里已经给出了。下载到官方镜像之后,里面有烧写镜像的脚本,打开一看一目了然。

好吧,反省的话到此为止。说说过程。


编译Galaxy Nexus的原生镜像,首先要去http://source.android.com/source/build-numbers.html查看需要的源码版本。有多个适合的版本。

我这里下载了Android-4.0.4_r2.1和Android-4.1.2_r1两个版本。

在编译之前,还要去https://developers.google.com/android/nexus/drivers下载和Galaxy Nexus对应的驱动。注意选择驱动版本,不同的源码版本对应不同的驱动版本。

解压缩下载下来的驱动文件后,得到extrat开头的sh脚本。

chmod a+x ***.sh 使之有可执行的权限。

执行完毕后,得到vendor目录。把整个vendor目录拷贝到源码根目录下。也要注意版本问题,不要粗心大意。

lunch的时候需要选择编译的目标product。

Android-4.0.4选择tuna或者maguro(根据Galaxy Nexus机器的具体型号确定,GSM的选maguro,CDMA的选tuna)。

Android-4.1.2选择maguro。(这里插一句,如果编译Nexus 7的原生镜像,需要选择grouper)

之后,常规编译。(建议选择高配的服务器编译)

两个版本编译的时候都有bug,具体解决方法见前两篇文章。

编译成功之后去out/target/product/maguro(选择的目标product的名字)/目录,这个目录下有前文提到的5个img文件。

把5个文件打包成maguro.zip 。

执行adb reboot bootloader 把Galaxy Nexus启动到fastboot模式。

如果bootloader版本不匹配,去https://developers.google.com/android/nexus/images下载对应版本的官方镜像包。

解压镜像包找到需要的bootloader 的img版本。按照官方镜像包里提供的烧写脚本,烧写需要的bootloader到机器。

其他底层镜像版本问题,都去从官方下载的镜像包里找。即可解决。

我这里只关心上层的镜像的烧写。

烧写时需要用到fastboot工具。fastboot在编译出的out/host/linux-x86/bin目录下。

执行fastboot -w update maguro.zip

等待几分钟,烧写完毕后,机器自动重启。

-w参数是擦除原来的分区的内容,建议每次都加上,不然后续的运行中会遇到机器启动不了的问题。


烧写原生镜像到Nexus 7的步骤同上。Android-4.0.4不支持Nexus 7。

本人亲测Android-4.1.2 maguro--Galaxy Nexus    grouper--Nexus 7成功。



你可能感兴趣的:(烧写编译出的Android-4.0.4以及Android-4.1.2原生镜像到galaxy nexus 、Nexus 7)