美文网首页
Ubuntu 14.04 下载和编译源码并刷入Nexus 5x

Ubuntu 14.04 下载和编译源码并刷入Nexus 5x

作者: Acydmr | 来源:发表于2017-09-13 11:01 被阅读0次

    环境: Ubuntu16.04 LTS    Nexus 5x  openjdk 8


    No 1 .  安装必要的工具

     ###   安装配置 openjdk :

            添加源 :$ sudo add-apt-repository ppa:openjdk-r/ppa 

            更新:$ sudo apt-get update

            安装 openjdk: $ sudo apt-get install openjdk-8-jdk ;

            为了方便以后编译其他版本的代码,这里我安装了6-8的openjdk

            $ sudo apt-get install openjdk-6-jdk ;

            $ sudo apt-get install openjdk-7-jdk ;

            执行:$ sudo update-alternatives –config java,选择java的版本

            执行:$ sudo update-alternatives –config javac,选择javac的版本

            设置JDK优先级

            $ sudo update-alternatives --config java

            $ sudo update-alternatives --config javac

            选择完后命令输入 java -version 检查

            我并没有配置Java_Home,是因为同事告诉我不配置的话在编译的时候会自动选择jdk版本,相对方便些。

    ###   安装git : 使用repo工具会用到git

            $ sudo apt-get install git;

            安装完后进行配置:

            $ git config --global user.email "your email Address"

            $ git config --global user.name "your name"

    ###   安装curl:官方说法就是一个开源的文件传输工具,类似windows 的迅雷

            $ sudo apt-get install curl -y


    No 2 .  下载Android源码

       打开终端,执行如下命令:

       ### 新建一个bin目录

            $ mkdir ~/bin

       ### 将bin目录添加到环境变量中,这样做可以在任何目录都可以访问

            $ PATH=~/bin:$PATH

       ### 使用 curl 下载 repo 到bin目录下

            $ curl https://storage-googleapis.lug.ustc.edu.cn/git-repo-downloads/repo > ~/bin/repo

       ### 修改repo文件:国内访问不了Google,需要使用清华镜像下载

            $ sudo gedit ~/bin/repo ;

            设置REPO_URL 为:'git://aosp.tuna.tsinghua.edu.cn/android/git-repo'

       ### 添加权限

            $ chmod a+x ~/bin/repo

       ### 新建目录,用来存放下载的源码,另外:安装Ubuntu的时候务必给 /home最少100G                   空间,否则后面比较麻烦。需要用到 Gparted 分区工具再分配空间

            $ mkdir source  ,然后切换到source目录:$ cd source

       ### 初始化仓库

            $ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android- 7.1.1_r24

            如果提示需要验证信息,使用命令:

            $ git config --global user.email "your email address"

            $ git config --global user.name "your name"

            后面 -b 参数 是取的源码中的一个分支,较稳定的版本,而不加 -b 则会下载Android主线上正在开发中的最新代码。

            Android版本与代号对应关系 参考这个网址查看手机的版本代号,部分截图如下

       ### 开始漫长的下载.....

            $ repo sync  下载过程中,务必保证网络通畅,如中途中断,重新执行repo sync即可。以后需要更新代码的话,同样运行这个命令即可

    ### 替换已有的AOSP源代码的remote

            如果之前通过其他路径获取过源码,但之后希望通过TUNA同步,只需要将 .repo/manifest.xml中的

            <remote name="aosp" fetch=".." review="https://android-review.googlesource.com/"  />

            改为下面的即可:

            <remote name="aosp" fetch="git://aosp.tuna.tsinghua.edu.cn/android/"  

                  review="https://android-review.googlesource.com/" />

           如果git 提示错误,将git:替换成https://


    No 3 .  编译Android源码

       ### 搭建编译环境之 安装JDK

             在android 5.0之前,编译使用的是Oracle JDK,之后google将其替换成OpenJDK。上面有安装方法,此处不再赘述。。。

       ### 搭建编译环境之 安装ccache

             作用:加快编译速度

            $ sudo apt-get install ccache

            $ source ~/.bashrc

            $ echo export USE_CCACHE=1>> ~/.bashrc  按Esc 然后输入:qw回车退出

            $ prebuilts/misc/linux-x86/ccache/ccache-M50G 设置编译高速缓存

       ### 搭建编译环境之 安装需要的包

            参考Google官方文档:source.android.com/source/initializing.html

            参考博客:安装依赖

            $ sudo apt-get install g++-multilib

            $ sudo apt-get install python-markdown

            $ sudo apt-get install gperf

            $ sudo apt-get install libxml2-utils

            $ sudo apt-get install zlib1g-dev:i386

            $ sudo apt-get install zip

            $ sudo apt-get install gnupg

            $ sudo apt-get install libncurses5-dev:i386

            $ sudo apt-get install gcc-multilib

            如遇到依赖项错误, $ sudo apt-get install -f ,然后再执行上一步的操作

    ### 搭建编译环境之 下载硬件驱动

            google虽然代码开源,但是驱动并不开源,我们下载的源码中是没有vendor这个文件夹的,真机环境需要驱动

            官方下载驱动地址:developers.google.com/android/nexus/drivers

            这里就需要根据下载的源码版本号去找相应的驱动了,在网址右侧目录寻找相应的型号以及版本号,如图:

    寻找自己型号的驱动 nexus 5x的驱动,点击Link下载

            驱动下载完毕后,解压出来其实就是几个脚本文件,将脚本cp到源码根目录下 sh xxxxx.sh 执行,执行完毕后会生成vendor文件夹。 PS:执行脚本会提示按Enter继续,这里别连续按,因为在最后会让你输入“I ACCEPT”,同意使用协议的,大概能看到第八条的时候速度慢点就能看到了。

       ### 开始编译

            导入环境变量: source build/envsetup.sh

            lunch选择编译目标:输入数字

            开始编译: make -j8 (-j后面数字根据电脑CPU个数决定,公司电脑配置比较好,我设置的18,下班前编译,早上来就好了)

            查看CPU个数:cat/proc/cpuinfo


    No 4 .  烧录到nexus 5x 

       ### 安装adb

            $ sudo apt-get install adb

       ### 进入fastboot模式

            设置->关于手机->版本号->点击五次进入开发者模式->打开USB调试,然后命令行输入:adb devices连接成功会提示如下:

            List of devices attached

            021cbd7a4a92c20f      device

            $ adb reboot bootloader

            如果提示没有fastboot  -> $ sudo apt-get install fastboot

       ### 配置USB设备(驱动)

            手机连接电脑,命令行输入lsusb:如下

            断开连接,继续输入lsusb:如下

            可以看到断开连接后少了一个usb设备,即 Bus 001 Device 025: ID 18d1:4ee7 Google Inc.

            编辑rules文件,将此设备添加到规则中 --> ~$ sudo gedit /etc/udev/rules.d/70-android.rules 如果没有这个文件,新建一个

            添加:SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0666", OWNER=""

            将你手机对应的ID后面的信息替换进去然后保存,然后更新下

            ~$ cd /etc/udev/rules.d

            ~$ sudo chmod a+x 70-persistent-net.rules

            ~$ sudo udevadm control --reload-rules

       ### 指定img镜像位置

            export ANDROID_PRODUCT_OUT=out/target/product/bullhead

       ### 烧录

            fastboot flashall -w

    ### 烧录过程遇到的问题:

          错误1:data too large

          原因:我们指定的镜像位置的size超过了fastboot定义的最大值,不过我查资料说最新的fastboot已经替我们解决了这个题,可是我是用命令安装的fastboot,具体原因我也不是很清楚。

          解决办法 :cd 进入 ~/source/out/host/linux-x86/bin$,在这个目录下有一个fastboot,我们就在当前目录下执行 fastboot flashall-w

    错误2:手机进入adb reboot bootloader 模式后 输入fastboot flashall -w 显示waiting for devices

                   但是开机状态下 fastboot就可以正常连接

    解决办法:手机重启进入bootloader模式后,连接电脑输入lsusb 然后将ID信息再添加到rules文件中

                   ~$ sudo gedit /etc/udev/rules.d/70-android.rules  . 然后按照上面的方法再更新下,然后再次fastboot flashall -w 等待刷机成功。


       总之,遇到问题多百度google,最好还是将官方文档看一遍。这篇文章给需要的人做个参考,也是记录下自己的学习过程!

       大家编译烧录成功后请记得给我留言,加油!!!

    相关文章

      网友评论

          本文标题:Ubuntu 14.04 下载和编译源码并刷入Nexus 5x

          本文链接:https://www.haomeiwen.com/subject/puthsxtx.html