• Android 4.4 全套源代码及子模块源代码的下载方法


    博文《Android源代码下载——用git clone实现单个文件夹下载》介绍了採用git clone方法下载Android单个文件夹源代码的方法,这篇文章已经有四年的历史,这期间Google对源代码的管理站点已经进行了更改,直接採用原来的方法下载源代码已经失效。

    本文介绍了在ubuntu下(在Windows下安装Cygwin,通过Cygwin也可在Windows里通过本文的下载步骤下载Android源代码)获取眼下最新的Android 4.4 全套源代码以及单个自模块源代码的下载方法。可依据本文方法下载全套或者仅仅下载子模块Android源代码进行源代码分析和编译。下载过错中遇到非常多问题,这些问题的解决对大家获取源password非常有借鉴意义。
    Google源代码的官方帮助页面http://source.android.com/source/initializing.html。下载源代码依照此页面介绍的步骤操作就可以。


    以下简要介绍下下载的步骤和遇到问题的解决的方法。
    1、安装 Repo
    a) 建立Repo的安装文件夹、配置环境变量

    $ mkdir ~/bin

    $ PATH=~/bin:$PATH
    

     b) 获取Repo工具

    $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
    
      问题:上面是Google制定的repo获取地址,但获取可能失败。
      解决的方法:网上有网友给出了替代的获取地址,如遇报错可用以下的地址替代:
      curl "http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" > ~/bin/repo
    
    
    2、建立并进入源代码下载文件夹
    
    $ mkdir WORKING_DIRECTORY
    $ cd WORKING_DIRECTORY
    
    
    3、初始化源代码Repo下载地址
    如是下载当前最新的代码,则:
      repo init -u https://android.googlesource.com/platform/manifest
      如是下载特定Android成熟版本号分支的代码,则加上-b 參数。如当前最新公布的android 4.4分支代码:
    
      repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.1_r1
      命令如顺利运行,期间将要求输入unsername和email。直接输入自己的自己定义的username和email就可以。
    
      问题:在init过错中,可能会出现例如以下的443连接失败错误:
      error: Failed connect to android.googlesource.com:443
      解决的方法:找到/etc/hosts文件,添加例如以下地址(如无法保存须要用root权限改动hosts文件的訪问权限):
       74.125.128.82    android.googlesource.com
       74.125.31.82    www.googlesource.com
       203.208.46.172    cache.pack.google.com
       173.194.74.82   gerrit.googlesource.com
      上面的地址可能会发生变化,保存前在终端用ping命令逐个ping各个域名的当前IP地址替换: 
      e.g.: ping android.googlesource.com
    
    
     4、同步全套源码 
     $ repo sync
    
      问题:命令运行过程中可能会报错: 
     fatal: '../platform/abi/cpp.git' does not appear to be a git repository
     fatal: The remote end hung up unexpectedly
     error: Cannot fetch platform/abi/cpp 
    解决的方法
    在init成功后下载的.repo文件夹下的manifest.xml里,找到fetch属性,并改动为:
    fetch= "git://Android.git.linaro.org/"

    repo sync命令在运行过程中一般不会一次性成功,中途可能超时或存在其它失败,此时仅仅需再次运行repo sync就可以。曾经的记录会被缓存的。

     5、同步子模块代码
    
     repo syn命令是同步所制定分支的全套代码,但全套代码的运行过程非常长,有时候也并不须要全套代码而仅仅须要特定子模块的代码。
     获取子模块的方法是在repo sync 命令后加上子模块的git节点文件夹名就可以,比如想要获取Launcher3模块的源码:
     repo sync packages/apps/Launcher3
     各个子模块的节点文件夹查找方法: 
     在init成功后下载的.repo文件夹下的manifest.xml里。找到子模块的project 属性就可以:
     e.g. Launcher 3 的git文件夹:
      ...
      <project path="packages/apps/Launcher2" name="platform/packages/apps/Launcher2" />
      <project path="packages/apps/Launcher3" name="platform/packages/apps/Launcher3" />
      <project path="packages/apps/LegacyCamera" name="platform/packages/apps/LegacyCamera" />
     ...
    
    我的手机专卖店。欢迎各位看官捧场http://vpclub.octech.com.cn/ztewd/9495.html

    本文为原创文章,转载请注明出处http://blog.csdn.net/droidpioneer

  • 相关阅读:
    面试:div水平垂直居中方案--img自适应
    面试:call、apply、bind原理以及自己手写简易模式
    面试之:判断js类型的方式总结
    git的项目完整操作
    vue3.x版本新建项目相关知识和注意事项
    面试常问平时项目中【Date】的常用操作方法总结
    面试常问平时项目中【Math】的常用操作方法总结
    面试常问平时项目中数组【Array】的常用操作方法总结
    面试常问平时用的对象【Object】的创建方式和常用的对象方法总结
    优化无限列表性能vue-virtual-scroll-list【测试90w条数据】
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6809392.html
Copyright © 2020-2023  润新知