Android 5.1.1谷歌源生编译为Android Lollipop编译固件Nexus5 Nexus6 Nexus7

来源:互联网 发布:mac qq 五笔输入法 编辑:程序博客网 时间:2024/06/10 07:42
Android 5.1.1谷歌源生编译为Android Lollipop编译固件Nexus5 Nexus6 Nexus7

接触Android大概三个月的时间,之前一直都在研究高通平台的代码,这次写一下我自己编译谷歌源生代码遇到的问题。


系统Linux下的  
Ubuntu 14.04  64位
你需要知道AOSP,AOSP即Android Open Source Project 汉语意思是:谷歌开放源代码项目.我们通过Google官方下载的源代码,就是AOSP的代码, 其中是不包含Google开发的那些个应用的,各个厂商拿到的也是这个版本,在这个版本的基础上进行修改. 而Google发布的工厂固件则是包含全套Google服务的. 厂商如果想安装Google服务,就需要过Google的那一套认证,比较麻烦,而且价格不菲,鉴于Google在国内的尴尬地位,国内很多厂商都没有过这个认证.

Installing the JDK

The master branch of Android in the Android Open Source Project (AOSP) requires Java 7. On Ubuntu, use OpenJDK.

Java 7: For the latest version of Android

在源生文档里面说明 首先需要安装JDK   AOSP编译需要JAVA 7.0的版本   在Ubuntu下使用OpenJDK

本文均以Ubuntu操作为例,下面安装Ubuntu的OpenJDK,具体命令如下:

  1. $ sudo apt-get update
  2. $ sudo apt-get install openjdk-7-jdk
复制代码
然后设置默认JAVA版本

  1. $ sudo update-alternatives --config java
  2. $ sudo update-alternatives --config javac
复制代码

Ubuntu 14.04编译需求的支持包
  1. $ sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-dev:i386 zip
复制代码

接下来安装Repo:

引用原文说明,看不懂略过看中文说明
To install Repo:

    Make sure you have a bin/ directory in your home directory and that it is included in your path:

    $ mkdir ~/bin
    $ PATH=~/binPATH

    Download the Repo tool and ensure that it is executable:

    $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    $ chmod a+x ~/bin/repo

下载Android源代码

首先安装Repo,确认在你目录下是否有/bin路径
然后终端如下操作:
  1. $ mkdir ~/bin
  2. $ PATH=~/bin:$PATH
复制代码

然后下载repo ,这里需要翻墙,要不不能正常下载

  1. $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
  2. $ chmod a+x ~/bin/repo
复制代码

通过Repo获取具体分支,以下用 5.1.1的 LMY48M  android-5.1.1_r14版本为例

  1. $ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r14
复制代码

获取之后,开始下载 -j16 我开启了16线程 ,这个根据个人电脑的好像酌情安排。

  1. $ repo sync -j16
复制代码

repo下载源码这步骤我大概下载了2天2夜,翻墙之后的网速在50KB左右


如果下载没有完成之前,Repo的目录为空,当全部下载完成之后所有文件才会显示。

开始编译

1. 初始化编译环境

进入目录之后
  1. . build/envsetup.sh
复制代码

2. 加载机型
  1. lunch
复制代码

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

3.1 机型对照表[td]DeviceCode nameBuild configurationNexus 6shamuaosp_shamu-userdebugNexus Playerfuguaosp_fugu-userdebugNexus 9volantis (flounder)aosp_flounder-userdebugNexus 5 (GSM/LTE)hammerheadaosp_hammerhead-userdebugNexus 7 (Wi-Fi)razor (flo)aosp_flo-userdebugNexus 7 (Mobile)razorg (deb)aosp_deb-userdebugNexus 10mantaray (manta)full_manta-userdebugNexus 4occam (mako)full_mako-userdebugNexus 7 (Wi-Fi)nakasi (grouper)full_grouper-userdebugNexus 7 (Mobile)nakasig (tilapia)full_tilapia-userdebugGalaxy Nexus (GSM/HSPA+)yakju (maguro)full_maguro-userdebugGalaxy Nexus (Verizon)mysid (toro)aosp_toro-userdebugGalaxy Nexus (Experimental)mysidspr (toroplus)aosp_toroplus-userdebugPandaBoard (Archived)pandaaosp_panda-userdebugMotorola Xoom (U.S. Wi-Fi)wingrayfull_wingray-userdebugNexus Ssoju (crespo)full_crespo-userdebugNexus S 4Gsojus (crespo4g)full_crespo4g-userdebug3.2 三个版本说明版本[td]BuildtypeUseuserlimited access; suited for productionuserdebuglike “user” but with root access and debuggability; preferred for debuggingengdevelopment configuration with additional debugging tools
选择aosp_hammerhead-userdebug之后,会有下面的确认信息:
  1. ============================================
  2. PLATFORM_VERSION_CODENAME=REL
  3. PLATFORM_VERSION=5.0.50.50.50.50
  4. TARGET_PRODUCT=aosp_hammerhead
  5. TARGET_BUILD_VARIANT=userdebug
  6. TARGET_BUILD_TYPE=release
  7. TARGET_BUILD_APPS=
  8. TARGET_ARCH=arm
  9. TARGET_ARCH_VARIANT=armv7-a-neon
  10. TARGET_CPU_VARIANT=krait
  11. TARGET_2ND_ARCH=
  12. TARGET_2ND_ARCH_VARIANT=
  13. TARGET_2ND_CPU_VARIANT=
  14. HOST_ARCH=x86_64
  15. HOST_OS=linux
  16. HOST_OS_EXTRA=Linux-3.13.0-37-generic-x86_64-with-Ubuntu-14.10-utopic
  17. HOST_BUILD_TYPE=release
  18. BUILD_ID=AOSP
  19. OUT_DIR=out
复制代码

4.生成驱动目录
接下来需要在Android官网下载 Nexus5/6/7所需要的驱动:
Android官网驱动下载地址
下载完成后,解压出来是三个.sh文件,放到Android源码目录下面,然后执行.会将相关驱动放到vender目录下面.

5. 执行编译命令
  1. make -j16
复制代码
如果没有出错的话,在经过漫长的时间之后,编译成功

6. 刷机命令
关机状态下,长按音量下+电源,即可进入recovery模式, 然后在源码根目录下执行下面命令:
  1. fastboot -w flashall
复制代码
刷机成功后会自动重启,自此编译完成。文章来源:Android 5.1.1
0 0