【开发指南】如何为nexus 5编译固件

nexus 5是谷歌的亲儿子,而android的源码是开源的,那如果我有一个nexus 5手机,为何不自己为nexus 5编译软件呢?

开搞,本文假定已经有android 5.1的源码并已经配置好开发环境,如果没有则参考google官方文档下载源码并配置开发环境。参考https://source.android.com/source/initializing.html以及https://source.android.com/source/downloading.html。注意,这个过程可能需要翻墙,作为程序员的我们,翻墙不是小菜一碟。

另外你需要知道AOSP,AOSP即Android Open Source Project 汉语意思是:谷歌开放源代码项目。我们通过Google官方下载的源代码,就是AOSP的代码,其中是不包含Google开发的那些个应用的,各个厂商拿到的也是这个版本,在这个版本的基础上进行修改。而Google发布的工厂固件则是包含全套Google服务的。厂商如果想安装Google服务,就需要过Google的那一套认证,比较麻烦,而且价格不菲,鉴于Google在国内的尴尬地位,国内很多厂商都没有过这个认证。所以,我们自己编译的出来的软件和nexus 5官方放出来的刷机包还是有区别的。

1. 初始化编译环境

. build/envsetup.sh

2. 加载机型

lunch

3. 选择要编译的机器

You're building on Linux
Lunch menu... pick a combo:
     1. aosp_arm-eng
     2. aosp_arm64-eng
     3. aosp_mips-eng
     4. aosp_mips64-eng
     5. aosp_x86-eng
     6. aosp_x86_64-eng
     7. aosp_shamu-userdebug
     8. aosp_manta-userdebug
     9. full_fugu-userdebug
     10. aosp_fugu-userdebug
     11. aosp_grouper-userdebug
     12. aosp_tilapia-userdebug
     13. aosp_deb-userdebug
     14. aosp_flo-userdebug
     15. aosp_mako-userdebug
     16. aosp_hammerhead-userdebug
     17. aosp_flounder-userdebug
     18. mini_emulator_x86_64-userdebug
     19. mini_emulator_arm-userdebug
     20. mini_emulator_x86-userdebug
     21. mini_emulator_mips-userdebug
     22. mini_emulator_arm64-userdebug

3.1 机型对照表

Device

Code name

Build configuration

Nexus 6

shamu

aosp_shamu-userdebug

Nexus Player

fugu

aosp_fugu-userdebug

Nexus 9

volantis (flounder)

aosp_flounder-userdebug

Nexus 5 (GSM/LTE)

hammerhead

aosp_hammerhead-userdebug

Nexus 7 (Wi-Fi)

razor (flo)

aosp_flo-userdebug

Nexus 7 (Mobile)

razorg (deb)

aosp_deb-userdebug

Nexus 10

mantaray (manta)

full_manta-userdebug

Nexus 4

occam (mako)

full_mako-userdebug

Nexus 7 (Wi-Fi)

nakasi (grouper)

full_grouper-userdebug

Nexus 7 (Mobile)

nakasig (tilapia)

full_tilapia-userdebug

Galaxy Nexus (GSM/HSPA+)

yakju (maguro)

full_maguro-userdebug

Galaxy Nexus (Verizon)

mysid (toro)

aosp_toro-userdebug

Galaxy Nexus (Experimental)

mysidspr (toroplus)

aosp_toroplus-userdebug

PandaBoard (Archived)

panda

aosp_panda-userdebug

Motorola Xoom (U.S. Wi-Fi)

wingray

full_wingray-userdebug

Nexus S

soju (crespo)

full_crespo-userdebug

Nexus S 4G

sojus (crespo4g)

full_crespo4g-userdebug

3.2 三个版本说明版本

user

limited access; suited for production

userdebug

like “user” but with root access and debuggability; preferred for debugging

eng

development configuration with additional debugging tools

选择aosp_hammerhead-userdebug之后,会有下面的确认信息:

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=5.0.50.50.50.50
TARGET_PRODUCT=aosp_hammerhead
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=krait
TARGET_2ND_ARCH=
TARGET_2ND_ARCH_VARIANT=
TARGET_2ND_CPU_VARIANT=
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.13.0-37-generic-x86_64-with-Ubuntu-14.10-utopic
HOST_BUILD_TYPE=release
BUILD_ID=AOSP
OUT_DIR=out
============================================

4.生成驱动目录

接下来需要在Android官网下载 Nexus5所需要的驱动:https://developers.google.com/android/nexus/drivers#hammerheadlrx22c

下载完成后,解压出来是三个.sh文件,放到Android源码目录下面,然后执行.会将相关驱动放到vender目录下面.

5. 执行编译命令

make -j8

如果没有出错的话,在经过漫长的时间之后,编译成功:

6. 刷机命令

Nexus5关机状态下,长按音量下+电源,即可进入recovery模式, 然后在源码根目录下执行下面命令:

fastboot -w flashall

刷机成功后会自动重启

~/ fastboot -w flashall
target reported max download size of 1073741824 bytes
Creating filesystem with parameters:
    Size: 13725835264
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 8144
    Inode size: 256
    Journal blocks: 32768
    Label: 
    Blocks: 3351034
    Block groups: 103
    Reserved block group size: 823
Created filesystem with 11/838832 inodes and 93654/3351034 blocks
Creating filesystem with parameters:
    Size: 734003200
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 7472
    Inode size: 256
    Journal blocks: 2800
    Label: 
    Blocks: 179200
    Block groups: 6
    Reserved block group size: 47
Created filesystem with 11/44832 inodes and 5813/179200 blocks
--------------------------------------------
Bootloader Version...: HHZ12d
Baseband Version.....: M8974A-2.0.50.2.22
Serial Number........: 08ade1a513dc087b
--------------------------------------------
checking product...
OKAY [  0.100s]
sending 'boot' (8950 KB)...
OKAY [  0.500s]
writing 'boot'...
OKAY [  0.784s]
sending 'recovery' (9672 KB)...
OKAY [  0.556s]
writing 'recovery'...
OKAY [  0.814s]
erasing 'system'...
OKAY [  1.166s]
sending 'system' (328187 KB)...
OKAY [ 10.501s]
writing 'system'...
OKAY [ 23.623s]
erasing 'userdata'...
OKAY [ 14.657s]
sending 'userdata' (137318 KB)...
OKAY [  4.520s]
writing 'userdata'...
OKAY [  9.776s]
erasing 'cache'...
OKAY [  0.618s]
sending 'cache' (13348 KB)...
OKAY [  0.630s]
writing 'cache'...
OKAY [  1.070s]
rebooting...
finished. total time: 70.095s

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-08-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Timhbw博客

Xcode神器-Alcatraz

2016-08-1300:07:53 发表评论 566℃热度 相关地址 安装方法 使用方法 我的插件 目录 Alcatraz,Xcode上的神器!一个...

2648
来自专栏顶级程序员

高效 MacBook 工作环境配置

工欲善其事,必先利其器,工具永远都是用来解决问题的,没必要为了工具而工具,一切工具都是为了能快速准确的完成工作和学习任务而服务。 本文记录 MacBook 整...

4877
来自专栏YouMeek

一个Java程序员眼中的Mac OS(系列二:系统使用)

本文初衷 整理自己脑袋中、收藏中的那些资料,来一次清空,让自己重新开始。 帮助 Mac 后来者,减少他/她入门成本 先总结 Mac 系统你值得拥有。 本文所有的...

2796
来自专栏从零开始学自动化测试

Appium+python自动化10-AVD 模拟器

前言 有些小伙伴没android手机,这时候可以在电脑上开个模拟器玩玩 一、模拟器配置 1.双击启动AVD Manager,进入配置界面 ? 2.点Create...

3356
来自专栏埋名

Mac系统14款快速查看插件Quick Look Plugs

Mac系统下快速浏览的14款Quick Look插件,鼎力推荐,可能适合程序员,特别是前端开发人员,我已经将它疯狂的收录到,一万星星awesome-mac:

772
来自专栏Java学习网

高效程序员的MacBook工作环境配置

高效程序员的MacBook工作环境配置 本文记录整个配置过程,供新入手 MacBook 和觉得 MacBook 比较难用的同学参考。 1. 硬件提升 笔记本电脑...

9078
来自专栏编程之旅

使用Vundle管理Vim插件

编辑器流派的划分在程序员群体中一直存在着,而我也在尝试了SublimeText、VSCode和Atom这些代表着现代时尚功能的编辑器之后试着使用Vim,其实说到...

753
来自专栏嵌入式程序猿

谁动了我的下载固件

之前的TWR-K64板子openSDA被同事刷成了jlink固件,估计这哥们喜欢用Jlink呵呵,如果想刷回PEmicro固件,我们该如何做呢,首先先了解下,O...

2708
来自专栏工科狗和生物喵

搭建你自己的网站--LAMP架构(Ubuntu 16.04)

笔者目前算是一个WEB方向的踽踽前行的小菜鸟,但是也是现在手上有两台云服务器在手的人了,网站也做了两个了,所以,今天接着昨天的话题,我们来搭建一个自己网站,这样...

4015
来自专栏张戈的专栏

WordPress记住评论用户信息的js版本,直接操作cookie无视缓存

这两天一直在折腾博客的评论功能,原因是开启了百度云加速的 html 缓存,导致原有的记住评论者信息的功能失效了,每次刷新文章页面,用户信息都会清空。 于是就折腾...

2674

扫描关注云+社区