使用repo下载android源码详细过程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MonaLisaTearr/article/details/79768758
          最近开始从原生App的开发转到系统的开发,期间免不了对公司的系统源码进行定制、编译、烧录等,但是很多朋友由于时平时自己根据兴趣爱好学习的,所以手上并没有源码,说以在我们进行定制之前,好歹也需要弄份源码下来吧!废话不多说!

ps:本人用的时Ubuntu 14.04

一、git安装

        如果之前又安装过git那就忽略这一步,如果没有就按照下面命令进行安装以及配置即可:
        sudo apt-get install git

        git config –global user.email “[email protected]        git config –global user.name “xxx”

        这里多说一嘴,上面的邮箱跟用户名,直接写你平时用的即可,没有严格的规定,只不过是设置一个标识而已!

二、repo安装以及配置

     1、在用户目录建立/bin文件夹
          mkdir ~/bin
     2、将~/bin目录纳入到PATH
          export PATH = ~/bin:$PATH
     3、下载repo并设置权限
          curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
          chmod a+x ~/bin/repo

     在这里我们大概说一下repo,说repo之前我们先了解aosp项目,那什么是aosp项目呢?它的全称其实是Android Open Source Project,也就是整个android开源项目的意思,而repo就是google用来管理aosp项目的一个工具,由于aosp项目非常庞大,所以google采用了git对aosp项目进行多仓库管理,而repo就是用Python编写的一些对git命令进行调用的脚本,所以是,repo不是什么新东西,仅仅时对git的进行了一些封装而已!!

三、接下来我们开始同步源码了

     1、紧接着我们就在我们的用户目录下创建一个source文件夹使用repo工具初始化一个仓库
          repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

          此时,由于我们的repo 中的REPO_URL指向的是gerrit.googlesource.com的,由于某墙的原因会报如下错误:
          fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle 

          此时应该很多朋友想到科学上网,其实不用那么麻烦,清华大学就维护了一个aosp项目的镜像源,我们去那里搞就行了
          使用vi编辑~/bin/repo文件,修改里面的REPO_URL为下面内容即可:
          REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/' 

     2、搞定镜像源问题后我们继续初始化仓库,这次我们就不用原来的命令了,我们直接用带参数的指定具体分支的命令
          repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r1
          
          这里大家不要过于疑惑这个repo命令,其实它内部所做的操作就是git命令,就像时执行了下面这两条命令一样:
          git clone https://android.googlesource.com/platform/manifest
          git checkout -b android-6.0.1_r1 origin/android-6.0.1_r1

          这里我们指定了android-6.0.1_r1分支,因为不同分支对应支持不同的设备的,所以我们在明确我们的设备的情况下去选择不同分支,那么我们怎么知道哪些分支都支持哪些版本呢?下面给大家罗列一些6.0的!
          MMB29Q     android-6.0.1_r11     Marshmallow     Nexus 5, Nexus 5X, Nexus 6, Nexus 6P, Nexus 7 (flo/deb)
          MMB29T     android-6.0.1_r10     Marshmallow     Nexus Player
          MMB29S     android-6.0.1_r9     Marshmallow     Nexus 5, Nexus 6, Nexus 9 (volantis/volantisg)
          MMB29P     android-6.0.1_r8     Marshmallow     Nexus 5X, Nexus 6P
          MMB29O     android-6.0.1_r7     Marshmallow     Nexus 7 (flo/deb)
          MXB48K     android-6.0.1_r5     Marshmallow     Pixel C
          MXB48J     android-6.0.1_r4     Marshmallow     Pixel C
          MMB29M     android-6.0.1_r3     Marshmallow     Nexus 6P, Nexus Player
          MMB29K     android-6.0.1_r1     Marshmallow     Nexus 5, Nexus 5X, Nexus 6, Nexus 7 (flo/deb), Nexus 9 (volantis/volantisg)

          至此,我们的仓库就跟android-6.0.1_r1这个分支关联起来了!

三、同步源码

     同步源码就简单多了,我们只需要用repo sync命令即可,但是有些问题要注意下,避免后面编译的时候踩坑!
     
     1、保证文件系统够大,这是必须的,建议100G以上

     2、在完成sync之后,建议多sync几次,以保证所有文件都同步下来了,否则一旦有文件缺失,很可能会导致后续编译的时候出问题的

     3、最后就是,耐心点,几十个G的源码,耗时一辆天很正常!

    当然,我们也可以将repo sync的同步过程写成sh脚本,方便同步被中断时能够重新触发同步!这个大家可以去网上搜下资料!
    
 ok,经过这些步骤,源码应该能下来了!后续会给大家分享一些编译编译环境的配置以及编译的过程!



猜你喜欢

转载自blog.csdn.net/MonaLisaTearr/article/details/79768758