• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            life02

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              197 隨筆 :: 3 文章 :: 37 評(píng)論 :: 0 Trackbacks
            http://blog.csdn.net/xixinyan/article/details/6965837


            Android 源碼編譯

            關(guān)于Android源碼的獲取、編譯等,網(wǎng)上有很多的帖子解答,但其實(shí)都是基于官方網(wǎng)站說(shuō)明來(lái)寫(xiě)的,算是漢化過(guò)程吧,因此如果帖子看的不明,可以上源碼官網(wǎng)尋找答案。

            http://source.android.com/

            下面是自己在Ubuntu 8.04系統(tǒng)下編譯過(guò)程:

            1.源碼獲取

            可參照前面寫(xiě)的博客:http://www.cnblogs.com/playing/

            1).獲得官方Android源碼 repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread

            2).獲得CyanogenMod Android源碼  repo init -u git://github.com/CyanogenMod/android.git -b gingerbread

            (源碼位置github里面的CyanogenMod項(xiàng)目 https://github.com/CyanogenMod

            3).獲得三星Galaxy Android源碼 repo init -u git://github.com/drakaz/android.git -b gaosp-gingerbread

                  (源碼位于github里面drakaz項(xiàng)目 https://github.com/drakaz

            (因?yàn)樽约阂愕氖謾C(jī)是三星i7500 所以特別加了Galaxy Android,其實(shí)也是CyanogenMod 里面的一個(gè)分支吧)


            2.安裝下載編譯時(shí)需要的工具環(huán)境

            sudo apt-get install build-essential
             sudo apt-get install make 
             sudo apt-get install gcc 
             sudo apt-get install g++ 
             sudo apt-get install libc6-dev
             
             sudo apt-get install flex 
             sudo apt-get install bison 
             sudo apt-get install patch 
             sudo apt-get install texinfo 
             sudo apt-get install libncurses-dev
             
             sudo apt-get install git-core gnupg  //(gnupg系統(tǒng)可能已自帶)
             sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl
             sudo apt-get install ncurses-dev 
             sudo apt-get install zlib1g-dev
             sudo apt-get install valgrind(可選,有21M大,我覺(jué)得一般人是用不到的)
             sudo apt-get install python2.5 (實(shí)際上不用裝,Ubuntu 8.04 已經(jīng)自帶)
             sudo apt-get install sun-java6-jdk (或者 
            sudo apt-get install sun-java5-jdk)

            (很多其實(shí)系統(tǒng)已經(jīng)安裝了,除了紅色標(biāo)注要安裝外,其他編譯時(shí)沒(méi)有在安裝吧....)

            特別注意:

            JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older (官方說(shuō)明)

            即在編譯2.3之前的版本需要用JDK 5 ,2.3及2.3之后的版本用JDK6

            3.編譯源碼

            在命令行里面執(zhí)行make命令:

            $make

            然后是漫長(zhǎng)的等待......

            編譯成功后會(huì)在代碼目錄下多了一個(gè)out目錄

            可以看到命令行里面輸出如下信息:

            Install: out/target/product/generic/system/xbin/scp
            Notice file: system/extras/showmap/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/showmap.txt
            Install: out/target/product/generic/system/xbin/showmap
            Notice file: system/extras/showslab/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/showslab.txt
            Install: out/target/product/generic/system/xbin/showslab
            Notice file: external/sqlite/dist/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/sqlite3.txt
            Install: out/target/product/generic/system/xbin/sqlite3
            Notice file: external/dropbear/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/ssh.txt
            Install: out/target/product/generic/system/xbin/ssh
            Install: out/target/product/generic/system/xbin/strace
            Notice file: system/extras/su/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/su.txt
            Install: out/target/product/generic/system/xbin/su
            Install: out/target/product/generic/system/xbin/timeinfo
            Copy: out/target/product/generic/system/etc/apns-conf.xml
            Copying: out/target/product/generic/obj/NOTICE_FILES/src/kernel.txt
            Finding NOTICE files: out/target/product/generic/obj/NOTICE_FILES/hash-timestamp
            Combining NOTICE files: out/target/product/generic/obj/NOTICE.html
            gzip -c out/target/product/generic/obj/NOTICE.html > out/target/product/generic/obj/NOTICE.html.gz
            zip -qj out/target/product/generic/system/etc/security/otacerts.zip build/target/product/security/testkey.x509.pem
            Generated: (out/target/product/generic/android-info.txt)
            Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
            Install system fs image: out/target/product/generic/system.img
            Target ram disk: out/target/product/generic/ramdisk.img
            Target userdata fs image: out/target/product/generic/userdata.img<span class="Apple-style-span" style="font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px; white-space: normal; background-color: #ffffff;"> </span>

            ===================================================================================

            后續(xù)編譯:

            往往我們會(huì)已經(jīng)編譯過(guò)了源碼,但是會(huì)再次修改里面的某個(gè)文件,某個(gè)項(xiàng)目,這時(shí)候我們就可以單獨(dú)編譯了...

            先在android目錄下執(zhí)行
             $ . build/envsetup.sh
             然后你就會(huì)多出幾個(gè)可用的命令。

            例如,我們?cè)诟牧薈ontacts聯(lián)系人項(xiàng)目后,可以簡(jiǎn)單的執(zhí)行一下命令來(lái)單獨(dú)編譯這個(gè)部分:
              $mmm packages/apps/Contacts/
            為了可以直接測(cè)試改動(dòng),需要生成新的system.img,在android目錄下執(zhí)行:
                $ make snod
             當(dāng)然,如果你改動(dòng)的是emulator或者其它外圍相關(guān)的,而非系統(tǒng)內(nèi)部的東西,就不只是要重新生成system.img了

            =====================================================================================

            4.測(cè)試運(yùn)行

            1)先設(shè)置環(huán)境變量:

             打開(kāi)~/.bashrc文件, 并在最后添加下面兩行:
            PATH=”$PATH:$HOME/android/out/host/linux-x86/bin”
            ANDROID_PRODUCT_OUT=$HOME/android/out/target/product/generic
            export ANDROID_PRODUCT_OUT

            (就是配置你生成的out目錄)

            2)運(yùn)行模擬器:

            cd $HOME/android/out/target/product/generic

            emulator -image system.img -data userdata.img -ramdisk ramdisk.img

            如果最后能進(jìn)入到系統(tǒng)并看到一個(gè)大時(shí)鐘, 說(shuō)明就大功告成了!!!!


            5.編譯過(guò)程出現(xiàn)的問(wèn)題

            如果你以為按照上面一步步做就能成功編譯,那就想得太簡(jiǎn)單了,很多時(shí)候編譯過(guò)程中會(huì)出現(xiàn)一些意想不到的錯(cuò)誤,導(dǎo)致編譯中斷!不過(guò)還好,遇到的問(wèn)題一般網(wǎng)上都是有解決方案的,只要搜索一下就ok了,下面是自己編譯過(guò)程中遇到錯(cuò)誤:

            1.缺少工具,如g++

            可通過(guò) sudo apt-get install ... 來(lái)安裝

            2.Android編譯時(shí)找不到stub-64.h的問(wèn)題

            把幾個(gè)Android.mk中的 -m64 的地方給注釋掉了,它們?cè)谶@里: external/clearsilver/cgi external/clearsilver/java-jni external/clearsilver/util external/clearsilver/cs
            這是用java6會(huì)出現(xiàn)這問(wèn)題,如果用java5 應(yīng)該就不會(huì)出現(xiàn)!

            參考文章:http://www.webgou.info/content/programming/262/ 


            posted on 2011-12-25 23:23 life02 閱讀(685) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Android開(kāi)發(fā)
            99re久久精品国产首页2020| 亚洲av伊人久久综合密臀性色| 久久国产一片免费观看| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 久久久国产精品亚洲一区| 久久久青草青青亚洲国产免观| 久久久精品视频免费观看| 久久综合九色综合网站| 久久精品免费大片国产大片| 亚洲va中文字幕无码久久不卡| 久久99国产精品久久99| 久久久久av无码免费网| 欧美久久亚洲精品| 国产精品久久亚洲不卡动漫| 噜噜噜色噜噜噜久久| A级毛片无码久久精品免费| 人妻无码αv中文字幕久久| 久久精品国产99久久香蕉| 精品九九久久国内精品| 午夜人妻久久久久久久久| 亚洲欧美日韩精品久久亚洲区| 9久久9久久精品| 国内精品久久久久久久97牛牛| 狠狠综合久久综合88亚洲 | 91久久精品91久久性色| 亚洲狠狠婷婷综合久久久久| 伊人色综合久久天天网| segui久久国产精品| 国内精品伊人久久久久网站| 久久久91精品国产一区二区三区| 久久精品国产亚洲av麻豆蜜芽| 中文字幕精品久久| 思思久久精品在热线热| 国产精品中文久久久久久久| 精品免费久久久久国产一区| 久久久久久av无码免费看大片| 国産精品久久久久久久| 欧美黑人又粗又大久久久| 久久婷婷午色综合夜啪| 老男人久久青草av高清| 中文国产成人精品久久不卡|