android ubuntu9.10 源碼的編譯 Eclipse工程 Contacts編譯 應用載入

來源:互聯網
上載者:User

第一部分:編譯環境的安裝和編譯

1.   安裝ubuntu9.10系統

2.   把源碼傳到ubuntu,並解壓

3.   安裝編譯環境

     A.  sudo apt-get install bison

     B.  sudo apt-get install vim

c.  解決:安裝JDK 5.0

   1):根據官方文檔裡所說,原始碼的編譯必須使用JDK5才能編譯的了,所以這裡我們使用jdk5

   2): 需要先更新源,在終端裡執行 sudo vim /etc/apt/sources.list

   3): 在source.list裡把以下2行拷貝到文檔最後面:

       deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse

       deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse

             儲存退出。

   4): 執行 sudo apt-get update 更新源.

   5): 配置編譯環境並下載JDK5:sudo apt-get install sun-java5-jdk

d. sudo apt-get install build-essential

e. sudo apt-get install zlib1g-dev

f.  sudo apt-get install flex

g. sudo apt-get install libncurses-dev

h. sudo apt-get install libx11-dev

i. sudo apt-get install gperf 

4.    設定環境變數

vi ~/.bashrc

#java 程式開發/啟動並執行一些環境變數

JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

JRE_HOME=${JAVA_HOME}/jre

export ANDROID_JAVA_HOME=$JAVA_HOME

export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH

export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin

export JAVA_HOME;

export JRE_HOME;

export CLASSPATH;

HOME_BIN=~/bin/

export PATH=${PATH}:${JAVA_PATH}:${HOME_BIN};

#java 程式開發/啟動並執行一些環境變數

export ANDROID_PRODUCT_OUT=$androiddir/out/target/product/generic

ANDROID_PRODUCT_OUT_BIN=$androiddir/out/host/linux-x86/bin

export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT};

儲存退出,然後執行source ~/.bashrc同步源

注意$androiddir是你android源碼的目錄

5.    在源碼工程目錄 make,等待.......完成

      啟動模擬器

. build/envsetup.sh

emulator &

執行如果彈出模擬器視窗,則表示編譯成功

 

第二部分:模組編譯 在源碼目錄

A. 編譯SDK

# make PRODUCT-sdk-sdk

編譯好sdk後,在out/host/linux-x86/sdk/android-sdk_eng.xxx_linux-x86,注意要移除出來,不如下次mmm編譯時間會清除掉他

B. 編譯應用模組:不如連絡人

. build/envsetup.sh

mmm packages/apps/Contacts 

$ make snod

重建system.img,再運行模擬器: emulator &

 

//非必須,可以通過Eclipse工程建立

C. 建立Android Virtual Device

編譯出來的SDK是沒有AVD(Android Virtual Device)的,我們可以通過android工具查看:

$ android list

建立AVD:

$ android create avd -t 1 -n myavd

可以android –help來查看上面命令選項的用法。建立中有一些選項,預設就行了

再執行android list,可以看到AVD存放的位置

以後每次運行emulator都要加-avd myavd或@myavd選項:

$ emulator -avd myavd

 

第三部分:搭建eclipse環境  Eclipse

1.下載eclipse 

sudo apt-get install eclipse

2.下載ADT,下載完後重啟

a.開始Eclipse,然後選擇 Help > Software Updates > Find and Install….

b.對話方塊出現後,選擇 Search for new features to install 點擊 Next.

c.點擊New Remote Site.

d.在結果對話方塊,輸入遠端網站的名字(如Android Plugin),輸入網站如下:

https://dl-ssl.google.com/android/eclipse/site.xml點擊OK.

3.載入SDK

a.選擇 Window > Preferences… 來開啟屬性面板. (Mac OS X: Eclipse > Preferences)

b.從左邊面板選擇 Android。

c.在主介面上定位SDK 點擊 Browse… 然後定位 SDK檔案夾.

d.點擊 Apply, 然後點擊 OK.

4.建立一個android工程調試應用。

 

第四部分:載入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源碼

5. 修改eclipse配置,位於android.importorder目錄下的eclipse.ini檔案,修改-Xms,-Xmx為128和512

-Xms128m

-Xmx512m

調試:

1. 退出Eclipse工程

2. 在android源碼目錄執行  . build/envsetup.sh

3. 啟動模擬器 emulator &

4. 等模擬器啟動成功後,啟動ddms   ddms &

5. 選擇進程 ,注意一定要選擇

6. 啟動Eclipse,配置調試資訊

 

7. 設定斷點,啟動調試

第五部分:添加一個應用為android系統應用

1. 在和系統相同版本的SDK目錄下開發自己的android應用

2. 把開發的android工程放到源碼的packages/apps/目錄下

3. 在工程目錄下添加Android.mk檔案,修改LOCAL_PACKAGE_NAME :=test001 把工程名指定為自己的工程名,我載入的工程為test001

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

 

LOCAL_MODULE_TAGS := user

 

LOCAL_SRC_FILES := $(call all-java-files-under, src)

 

LOCAL_STATIC_JAVA_LIBRARIES := googlelogin-client

 

LOCAL_PACKAGE_NAME :=test001 

LOCAL_CERTIFICATE := shared

 

include $(BUILD_PACKAGE)

 

# Use the folloing include to make our test apk.

include $(call all-makefiles-under,$(LOCAL_PATH))

4. 回到源碼目錄,然後執行 . build/envsetup.sh 注意sh後面有個空格

5. 執行mmm packages/apps/test001  編譯test001.apk包

6. 執行make snod,編譯system.img包

7. 執行emulator &就可以在應用程式下看到自己編譯的工程了

 

第六部分: 如何在android源碼基礎上修改連絡人應用,添加自己的activity

1. 首先建立一個android工程,載入自己的java檔案和資源檔

2. 在自己的android工程初步調試成功以後,把該工程的java檔案,資源檔拷貝到連絡人對應的java檔案和資源檔目錄

3. 然後在linux下執行以下命令,編譯人連絡人模組,把資源檔編譯到連絡人目錄中

. build/envsetup.sh

mmm packages/apps/Contacts 

4. 重新整理android源碼工程,這個時候你就可以在Contacts包目錄下看到你新加的資源檔和源檔案了,並可以在源碼工程下修改代碼並直接調試了

5. ?? 為什麼不在android源碼工程下直接添加源檔案和xml資源檔了????

答:因為我們的android源碼工程師以java工程匯入的,如果添加android的xml檔案的話,java程式無法識別資源R檔案,所以我們必須先把需要的

                xml資源檔先在linux下編譯

6. 在源碼工程修改後,則可在linux下再次執行連絡人編譯命令,並 make snod載入system.img檔案,並啟動模擬器(emulator &),就可以看到你的修改了。

 

第7部分:Contacts應用的基本結構

主入口程式:DialtactsActivity.java

啟動函數:

   protected void onCreate(Bundle icicle) {

        super.onCreate(icicle);

 

        final Intent intent = getIntent();

        fixIntent(intent);

        //hide title

        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.dialer_activity);

   /*初始化tab布局*/

        mTabHost = getTabHost();

 //設定Tab改變通知

        mTabHost.setOnTabChangedListener(this);

 

        // 設定撥號盤Tab標籤

        setupDialerTab();

  //    設定撥打日誌Tab標籤

        setupCallLogTab();

 //  設定連絡人Tab標籤

        setupContactsTab();

             //   設定最愛的Tab標籤

        setupFavoritesTab();

   //設定當前顯示的tab頁

        setCurrentTab(intent);

 

        /*????*/

        if (intent.getAction().equals(UI.FILTER_CONTACTS_ACTION)

                && icicle == null) {

            setupFilterText(intent);

        }

    }

                                                                                                               by zhangweia 07/19

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.