Ubuntu14.04 64位下载编译Android源码,刷机Nexus5

安装Ubuntu

  • 不好意思,自行百度.- 反正最好分个 180G,然后内存起码 4G

配置环境 下载源码

  • 一般默认 python 版本是 2.x的,所以3.x是会报错
  • Android6的话 ,直接安装openjdk7
  • 其他的话,查看下下面的编译环境配置和编译要求。
    • 先终端输入 java -version
      • 有的话,它会告诉你是哪个版本
      • 没有的话,它会提示你安装指令,照抄呗
      • sudo apt-get install openjdk-7-jdk
    • 配置一下 JAVA_HOME
      • echo $JAVA_HOME
      • 没有输出的话 - 设置呗
    • echo export JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/">> ~/.bashrc
    • 重启一下终端设置
    • source ~/.bashrc
    • 输入$JAVA_HOME 看下是不是有输出
  • git
    • sudo apt-get install git
    • git config --global user.name "Github的名字"
    • git config --global user.email "Github的Email"

  • 初始化源码环境

  • 首先下载 repo 工具

        mkdir ~/bin
        PATH=~/bin:$PATH
        curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
        如果上述 URL 不可访问,可以用下面的:
        curl -sSL  'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
        chmod a+x ~/bin/repo
    
  • 然后建立一个工作目录(名字任意)

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  • 初始化仓库

    repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
    如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:
     REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'
    
  • 如果需要某个特定的 Android 版本 (Android 版本列表):

    repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-4.0.1_r1(比如4.0)
    
  • 同步源码树(以后只需执行这条命令来同步):

    repo sync
    

  • 初始化同步方法2

    • 注意,因为是要编译指定的源码,所以记得加上Android版本分支
    • Android版本分支
  • 版本分支很重要,别忘了!!!

    • 实在不行,你就把源码目录写成分支名字,因为你要根据这个 分支名字 获取 细分版本号
    • 根据 细分版本号 才能下载到对应的驱动文件
      1529397036(1).jpg
  • 啥?不想,那当我没说过!

  • 这时候,聪明可爱的你肯定已经在开始同步了。

  • 下载驱动!!! 没有这个你是没法开机的,会一直在 Google 这个logo无法开机。

    • 驱动链接
  • 找到你 对应的手机机型,根据上面的 细分版本号 下载驱动 - 两个或者三个,都下载下来。

    1529397122(1).jpg

编译

  • 这时候你已经下载完了把,把刚刚下载的驱动解压到源码目录下

  • 会是多个.sh文件 像这样

    • extract-lge-hammerhead.sh
    • extract-broadcom-hammerhead.sh
    • extract-qcom-hammerhead.sh
  • 源码目录下执行 .sh 文件。

  • 像这样 ./extract-lge-hammerhead.sh

    • 然后就出现一堆英文,不要管它。直接 按Enter一路向下,直到你看到第8条,然后注意 继续Enter,最后会有一个什么什么的,需要你输入 I ACCEPT,一定要全部大写,不然再执行一边呗。
  • 三个都要这样操作 - 这时候,源码路径下就会有一个 vendor 的文件夹- 然后开始编译了 ,假设你环境配置正确。没配置正确?那就慢慢编译呗,再挨个看报错修改东西呗。

  • Linux编译环境配置

  • 编译要求

    • 这里会告诉你哪个Android版本需要哪个jdk版本 - 在Ubuntu 14.04 64位的基础上,编译4.4和6.0实际上只是一个使用jdk6一个使用openjdk7的区别。起码在我自己编译的时候是这样子
    • 还有就是如果开始编译6.0 使用的 apt-get install openjdk7,后面你又打算编译4.4。那么在你安装jdk1.6.0_xxx.bin的时候,记得apt-get remove openjdk-7-jre 什么的,有三个反正不知道啥你就 tab 键,否则 jdk-version 一直是1.7,就算你修改了 /erc/profile 还是 ~/.bashrc 官方说是Android7-8使用openjdk8,5-6使用openjdk7,2.3-4.4使用jdk6 - 编译前配置
    • 在 .bashrc文件中添加:export USE_CCACHE = 1 - echo export USE_CCACE=1 >> ~/.bashrc
      • 为了提高编译效率,设置编译器高速缓存。
    • 执行以下命令:
      • prebuilts/misc/linux-x86/ccache/ccache -M 30G
      • 这个 30G 根据自己的硬盘空间大小继续调整
  • 开始编译

    • 源码路径下

    • source . build/envsetup.sh

    • lunch

      • 比如我是Nexus5,所以选择 19
      • aosp_hammerhead_userdebug
        image

        image
    • user 用于正式产品

    • userdebug 和user类似,但是有root权限,并且可以调试,主要用于调试

    • eng 开发用的选项,配有额外的调试工具。

    • 如果编译后只在模拟器上运行,则lunch后可以就直接输入:1

    • 特定设备上运行编译系统的详细信息

    • 最后,make -j4 或者 make -j8 或者 make -j16,看你配置了。

    • 我是两三个小时直接编译成功,看配置和人品吧,啊哈哈哈哈。

刷机

  • sudo adb reboot bootloader
  • 这个时候可能adb devices 你会发现找不到设备
    • 如果是虚拟机的话,点开上面那个 虚拟机 选项,可移动设备
    • 然后 连接
  • 可以执行下解锁命令
    • fastboot oem unlock
  • fastboot -w flashall
  • 然后就会自动重启,开机。

刷机失败

  • 失败?
    image

你可能感兴趣的:(Ubuntu14.04 64位下载编译Android源码,刷机Nexus5)