美文网首页Android故事
Android 8.0源码编译及刷入nexus

Android 8.0源码编译及刷入nexus

作者: 骑着海去看蜗牛 | 来源:发表于2017-09-10 23:13 被阅读521次

    下载源码

    创建分区

    由于Android源码是区分大小写的,所以如果是mac设备,需要新建一个区分大小写的分区来存储下载的源码。
    创建命令:
    hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg
    因为下载后的源码大概有60G,编译建议留70G的空间,否则可能遇到编译失败。如果把分区卸载了重新加载再编译,会重头开始编译,意味着你可能又需要70G的空间,所以no zuo no die,编译存储空间预留大一点。
    增加空间命令:
    hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

    下载必要的工具

    通过 MacPorts 获取 Make、Git 和 GPG 程序包:
    $ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

    下载repo

    确保主目录下有一个 bin/ 目录,并且该目录包含在路径中:
    $ mkdir ~/bin
    $ PATH=~/bin:$PATH

    下载 Repo 工具,并确保它可执行:

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

    新建一个文件作为存储目录

    $ mkdir WORKING_DIRECTORY
    $ cd WORKING_DIRECTORY

    使用你注册过的google账户作为git账户下载

    这会增加你下载成功的几率,如果不做,google可能会在中途断掉链接
    $ git config --global user.name "Your Name"
    $ git config --global user.email "you@example.com"

    初始化源码树

    repo init -u https://android.googlesource.com/platform/manifest -b android-8.0.0_r4

    开始下载

    repo sync

    搭建编译环境

    下载nexus5x的驱动

    下载后解压会得到一个名为extract-lge-bullhead.sh的文件,放到下载好的源码根目录,然后执行脚本/.extract-lge-bullhead.sh,这个时候源码根目录会生成一个vendor文件夹,这就是驱动文件。

    编译准备工作

    • 设置文件描述符数量上限
      在 Mac OS 中,可同时打开的文件描述符的默认数量上限太低,在高度并行的编译流程中,可能会超出此上限。
      要提高此上限,请将下列行添加到 ~/.bash_profile 中:
      ulimit -S -n 1024
    • 优化编译环境
      运行命令:
      export USE_CCACHE=1
      prebuilts/misc/darwin-x86/ccache/ccache -M 50G

    开始编译

    source build/envsetup.sh
    lunch + shift键会提示你可以编译的分支,比如bullhead_userdebug
    make -j8

    编译成功

    刷入nexus5x

    进入recovery模式,在源码根目录运行fastboot -w flashall,等待刷机成功,享受自己编译的android系统。
    terminal运行adb root,可以看到系统已经是root。

    源码导入android studio阅读

    编译源码idegen模块及生成AS配置文件(*.ipr)

    在源码根目录执行
    mmm development/tools/idegen/
    结果如下图


    生成成功

    执行脚本
    /. development/tools/idegen/idegen.sh

    屏幕快照 2017-09-08 下午5.45.48.png

    这时候去源码根目录看会发现多了android.ipr和android.iml。

    • 导入android studio
      然后android studio 打开已有项目选择android.ipr,加载完后即可阅读android源码。

    解决跳转问题

    这时候你打开Activity.java,然后随便点击一个类,不会跳转到源码相关目录,而是会去引用的library里的类。
    删除除图片外的所有引用


    删除后保留下的

    相关文章

      网友评论

      • U2tzJTNE:请问一下 android-8.0.0_r4的源码多大 我这边虚拟机只有200G的空间够用吗
      • Summit4292:兄弟,分享一下你8.0编译后的android.ipr和android.iml这两个文件,电脑配置低,编译快累死了:sob: ,万分感谢
        d9d9411f70f1:楼住在吗。编译源码时遇到一些问题。来来回回2周了。想请教一下QQ858594355能加下QQ吗
        骑着海去看蜗牛:只需要编译源码idegen模块就可以生成这两个文件,并不费时间的。

        在源码根目录执行
        mmm development/tools/idegen/

      本文标题:Android 8.0源码编译及刷入nexus

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