android2.3源碼下載編譯過程

 @官方的文檔地址:http://source.android.com/source/download.html


 @系統要求:1 ubuntu 10.04或以上版本
          2 64位系統(查看系統命令: uname -m 如果出現i386 i686 i586則是32位 如果出現amd64 則是64位系統 )
      3 jdk1.6 或更高版本
   


1安裝下載源碼所需要的工具 
1.1
   sudo apt-get install git-core curl
   這條命令會從互聯網的軟件倉庫中安裝 git-core 和 curl
1.2
   mkdir ~/bin
   PATH=~/bin:$PATH
   在home目錄下建立bin目錄並設置環境變量
1.3
  curl http://android.git.kernel.org/repo >~/bin/repo
  這句命令會下載 repo 腳本文件到當前主目錄的/bin 目錄下,並保存在文件repo 中。
1.4
   chmod a+x ~/bin/repo
   修改 repo 文件可執行權限
1.5
   執行下面的命令創建並進入空文件夾
   mkdir yourdirectory
   cd yourdirectory
2repo客戶端初始化
   2.1
        下面是官網給的命令,但在公司行不通會報Connection timed out的錯誤,但在家直接用估計可以
        repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
   2.2
        在公司同步要先將bin裏的.repo文件的
        REPO_URL='git://android.git.kernel.org/tools/repo.git' 
        改成
        REPO_URL='http://android.git.kernel.org/tools/repo.git'
        然後命令改成下面這個(注意後面的版本號寫法和官網不太一樣,如果寫-b Gingerbread的話會找不到版本)
        repo init -u http://android.git.kernel.org/platform/manifest.git -b android-2.3.3_r1
      (參考 http://blog.csdn.net/shaohui99/archive/2010/06/29/5702483.aspx)
   2.3
        執行上面的命令可能還會報個IOError找不到文件(暫時還不知道爲什麼)
    但執行下面兩條命令
     touch ~/.gitconfig
         rm -rf .repo
    後再執行2.2的命令就可以同步了
    成功的話會叫你填寫自己的名字和郵箱
3下載源碼
3.1
   執行下面的命令會開始下載代碼
   repo sync
   如果也有 Connection timed out錯誤就找到你在1.5時創建的目錄下找到.repo文件夾打開後找到下載清單manifest.xml(顯示隱藏文件)
   打開manifest.xml
   修改
   fetch="git://android.git.kernel.org/"
   爲
   fetch="http://android.git.kernel.org/"(http的穿透)
   然後再執行repo sync,成功後會下載代碼要幾個小時(我下載了一天)

 4編譯
4.1
  先進入1.5創建的空目錄
  再執行 make 命令
    
  

32位系統也能編譯了(此方法來自於robotv用戶@#¥%……%&掌聲)
其實32位的也可以編譯,這個是別人寫的,我試了,成功,給大家參考一下


在使用:
$ repo init -u git://Android.git.kernel.org/platform/manifest.git
$ repo sync
下載完代碼後,進行make,
$cd ~/mydroid
$make
卻出現瞭如下錯誤:
build/core/main.mk:73: You are attempting to build on a 32-bit system.
build/core/main.mk:74: Only 64-bit build environments are supported beyond froyo/2.2.
這是因爲froyo/2.2默認只支持64-bit,看到有些網友還要去下載64-比他的操作系統,很是麻煩,於是通過不斷搜索資料終於解決,


解決辦法:
需要進行如下修改即可,

./external/clearsilver/cgi/Android.mk 
./external/clearsilver/java-jni/Android.mk 
./external/clearsilver/util/Android.mk 
./external/clearsilver/cs/Android.mk
四個文件中的
LOCAL_CFLAGS += -m64 
LOCAL_LDFLAGS += -m64 
註釋掉,或者將“64”換成“32”
LOCAL_CFLAGS += -m32 
LOCAL_LDFLAGS += -m32 


然後,將
./build/core/main.mk 中的
ifneq (64,$(findstring 64,$(build_arch))) 
改爲:
ifneq (i686,$(findstring i686,$(build_arch))) 


OK!問題解決
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章