Mac OS X 10.8.4下Android4.2.2源碼下載與編譯


參考 博文  http://blog.csdn.net/yangblocker/article/details/9673097html


1、環境配置java

電腦: MacBook Pro  2.5GHz Intel Core i5node

內存:4GB 1600 MHz DDR3linux

OS: Snow Leopard 10.8.4android

XCode: 4.6.4 git

JDK:1.6    這個必須是1.6版本。若是是1.7的話要另外安裝1.6版本,並設置爲默認版本,不會的我稍後介紹方法。web


2、設置Mac OS X的編譯環境緩存

基本的參照官網Setting up a Mac OS X build environment
bash

這裏特別要強調一下Android源代碼必須在大小寫敏感的文件系統下編譯,而Mac OS默認不是大小寫敏感的,所以須要建立eclipse

一個大小寫敏感的磁盤鏡像文件。具體方法有兩種:一種是用命令建立,還有一種就是用系統自帶的磁盤管理工具。

命令方法:用hdiutil create命令,我嘗試過,但失敗了,有誰知道麻煩告訴我下。

磁盤工具:進入應用程序/實用工具/磁盤工具,選擇文件->新建->新建空白映像


點擊建立,ok,建立好了。磁盤鏡像文件保存在當前用戶根目錄下,個人是在/ywen目錄下。咱們須要其將掛載到某個目錄下面,在終端進入建立的磁盤鏡像文件目錄,輸入hdiutil attach ~/android.dmg  -mountpoint /Volumes/android。這樣就將其掛載到Volumes目錄下。至此,基本環境完成。

3、下載Android 4.2.2源碼。

 參照官網Downloading the Source Tree

首先咱們要先進入到咱們剛纔掛載的目錄下去。執行 $ cd /Volumes/android。

而後在按照官網步驟一步一步進行。

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

$ chmod a+x ~/bin/repo

$ mkdir WORKING_DIRECTORY (建立源碼保存的文件目錄)

$ cd WORKING_DIRECTORY/

而後就是下載源碼了,這裏我強烈推薦下使用Android內核剖析(柯元旦著)一書提供的一段防止下載異常的腳本。由於單獨下載可能會出現下載異常而後某個連接下載失敗的狀況。

[plain] view plaincopy

  1. #!/bin/bash   

  2.    #FileName  get-android.sh  

  3.    PATH=~/bin:$PATH   

  4.    repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1   

  5.    repo sync   

  6.    while [ $? = 1 ]; do   

  7.    echo "================sync failed, re-sync again ====="   

  8.    sleep 3   

  9.    repo sync   

  10.    done  


複製上面代碼保存到剛纔的源碼目錄(WORKING_DIRECTORY)裏。如:get-android.sh。

最後在終端執行 $ ./get-android.sh開始下載源碼了。接下來就是漫長的等待,我也不清楚要下載多久,我都是晚上把電腦丟在那裏,設置不讓電腦休眠(休眠可能會掉網的),一直下載。當出現下圖所示不少個100%時,那恭喜你,下載完成了。


4、編譯下載的源碼

設置編譯初始化環境

一、$ source build/envsetup.sh

二、選擇編譯目標 $lunch full-eng

開始編譯代碼

$ make 

編譯過程很漫長,也是最關鍵的部分,有不少有意思的事情會發生的。

一、若是以前java版本不是1.6的,這個時候就會報錯了,提示java version不正確。關於這個錯誤。能夠查看這裏https://forum.processing.org/topic/how-to-re-enable-java-1-6-on-mac-osx-mountain-lion,看不懂的也能夠問我,你們一塊兒討論。

二、若是出現  If you wish to build using higher version of SDK, build/core/combo/HOST_darwin-x86.mk:66: * try setting BUILD_MAC_SDK_EXPERIMENTAL=1 before build/core/combo/HOST_darwin-x86.mk:67: * rerunning this command 這種錯誤的話。

在終端執行export BUILD_MAC_SDK_EXPERIMENTAL=1就能夠了。繼續執行$make 編譯源碼

三、我記得在編譯了一個多小時吧的時候出現個棘手錯誤,中止編譯了,錯誤以下。


當時有點茫然,google了下,說是webkit的一個bug。可參考這裏https://groups.google.com/forum/#!msg/android-building/MrM4BneUoCw/f0xHBHgsgEsJ


(我的補充 :)

  關於上面的錯誤,就是原做者所說的webKitbug的解決辦法 參考https://bug-92264-attachments.webkit.org/attachment.cgi?id=154381 ;  上面就是說要修改XPathParser.cpp 文件,修改 46,47 添加代碼

using namespace WebCore;
using namespace XPath;

以下:


using namespace WTF;
using namespace Unicode;

//namespace WebCore {
//namespace XPath {

using namespace WebCore;
using namespace XPath;


修改 627 行 方法的代碼 (註釋的是源代碼) 修改以下:

void Parser::deleteNodeTest(Step::NodeTest* t)
{
  //  if (t == 0)
    //    return;
    
  //  ASSERT(m_nodeTests.contains(t));
    
    m_nodeTests.remove(t);
    delete t;
}

//}}  記得註釋2個右括號




繼續$make 最後編譯成功後會出現

nstalled file list: out/target/product/generic/installed-files.txt

Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
Running: mkyaffs2image -f out/target/product/generic/system out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
Install system fs image: out/target/product/generic/system.img

編譯後運行模擬器::


 首先 source build/envsetup.sh (假如你這行命令你以前設置好了就不用了,)

 輸入 $ lunch  命令

 跟住會提示你選擇版本,咱們選擇 第一個版本1, 輸入1

命令運行完  輸入命令  emulator







導入android源碼



第二部分:搭建Eclipse源碼工程

1. 進入源碼目錄下的development/ide/eclipse,把android-formatting.xml ,android.importorder , .classpath拷貝到源碼目錄
2. chmod +x .classpath 賦予執行權限
3. 在eclipse工程菜單 window-->preferences-->java-->Code Style-->Formatter 導入android-  formatting.xml文件,organize imports導入android.importorder文件
4. 新建一個java工程,導入android源碼  (參考下面導入android源碼)
5. 修改eclipse配置,位於android.importorder目錄下的eclipse.ini文件,修改-Xms,-Xmx爲128和512
        -Xms128m
        -Xmx512m

第三部分:調試android源碼

1. 退出Eclipse工程
2. 在android源碼目錄執行  . build/envsetup.sh ,初始化環境變量 
3. 啓動模擬器 emulator &
4. 等模擬器啓動成功後,啓動ddms   ddms &

5. 在ddms上選擇你須要調試的進程,通常若是是調試系統自帶的應用,好比聯繫人,選中下面進程

未命名

6. 打開Eclipse工程,設置調試端口

    選擇你的工程,右鍵打開菜單選擇 Debug AS—Debug configuration 彈出窗口,選擇Remote JAVA Application,右鍵在菜單選擇NEW,彈出下面的視圖,修改Port爲8700

未命名

7.debug後在選擇的進程上面若是出現了未命名  ,則表示成功進入調試了。


源代碼導入到eclipse工程中           

轉自: http://blog.chinaunix.net/uid-26215986-id-3969849.html


文地址: Android源碼導入Eclipse 做者: hurly117                                           下載源碼編譯後,將Android源碼導入Eclipse,方便查看.
    1. 將源碼目錄/development/ide/eclipse 中的.classpath複製到源碼根目錄下(和development文件夾同一目錄).
            .classpath在linux下時隱藏文件,須要顯示隱藏文件後才能看到.
            android-formatting.xml用來配置eclipse編輯器的代碼風格,能夠不導入
            android.importorder用來配置eclipse的import的順序和結構,能夠不導入
      * 導入方法

            window->preferences->java->Code style->Formatter中導入android-formatting.xml
            window->preferences->java->Code style->Organize Imports中導入android.importorder
    2. 更改Eclipse的緩存設置
            更改Eclipse目錄下的eclipse.ini文件,下面僅做參考,不能小於下面的數值     

  1. -Xms128m

  2. -Xmx512m

  3. -XX:MaxPermSize=256m

    3. 新建一個Java Project,輸入名字,將use default location勾掉,指定到你源碼的目錄下,Eclipse就會自動將源碼導入.



問題:
    導入的源碼編譯後有不少的錯誤:
Project'AFDebug' is missing required library:'out/target/common/obj/JAVA_LIBRARIES/google-common_intermediates/javalib.jar
Project'AFDebug' is missing required library:'out/target/common/obj/JAVA_LIBRARIES/gsf-client_intermediates/javalib.jar
   
網上的說法是編譯時出現問題,須要在源碼目錄下執行下面的命令:
        make clobber
        make -j4
另外一種解決方法:
        在.classpath 刪除下面兩行
<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/google-common_intermediates/javalib.jar"/>
<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/gsf-client_intermediates/javalib.jar"/>
        添加 
<classpathentry kind="lib" path="/work/froyo/out/target/common/obj /JAVA_LIBRARIES/android-common_intermediates/javalib.jar"/>

上傳個人classpath文件:classpath.zip

修改classpath文件後,仍是報錯:在out目錄找一個jar包導入,我忘記目錄地址了,就上傳我找的jar包,文件太大了放在個人雲盤中:
http://yunpan.cn/Qea2DyTgQ3jHF (訪問密碼:963e)
相關文章
相關標籤/搜索