歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Android 4.4 全套源碼及子模塊源碼的下載方法

Android 4.4 全套源碼及子模塊源碼的下載方法

日期:2017/2/28 14:29:10   编辑:Linux教程

以前可以采用git clone方法下載Android單個目錄源碼的方法,但是目前Google對源代碼的管理網站已經進行了更改,直接采用下載源代碼已經失效。本文介紹了在Ubuntu下(在Windows下安裝Cygwin,通過Cygwin也可在Windows裡通過本文的下載步驟下載Android源碼)獲取目前最新的Android 4.4 全套源碼以及單個自模塊源碼的下載方法,可根據本文方法下載全套或者只下載子模塊Android源碼進行源碼分析和編譯。下載過錯中遇到很多問題,這些問題的解決對大家獲取源密碼很有借鑒意義。

Google源碼的官方幫助頁面:http://source.android.com/source/initializing.html,下載源碼按照此頁面介紹的步驟操作即可。

Android 4.4.4 發布下載 http://www.linuxidc.com/Linux/2014-06/103467.htm

最簡單的Ubuntu Touch & Android 雙系統安裝方式 http://www.linuxidc.com/Linux/2014-01/94881.htm

在Nexus上實現Ubuntu和Android 4.4.2 雙啟動 http://www.linuxidc.com/Linux/2014-05/101849.htm

Ubuntu 14.04 配置 Android SDK 開發環境 http://www.linuxidc.com/Linux/2014-05/101039.htm

64位Ubuntu 11.10下Android開發環境的搭建(JDK+Eclipse+ADT+Android SDK詳細) http://www.linuxidc.com/Linux/2013-06/85303.htm

Ubuntu 14.04 x64配置Android 4.4 kitkat編譯環境的方法 http://www.linuxidc.com/Linux/2014-04/101148.htm

Ubuntu 12.10 x64 安裝 Android SDK http://www.linuxidc.com/Linux/2013-03/82005.htm

下面簡要介紹下下載的步驟和遇到問題的解決辦法

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,直接輸入自己的自定義的用戶名和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" />
...

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved