隨筆 - 22  文章 - 467  trackbacks - 0
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(25)

          隨筆分類(74)

          文章分類(1)

          收藏夾(277)

          在線工具

          在線資料

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 217584
          • 排名 - 261

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          下面的內(nèi)容是在看過了很多的文章還有經(jīng)過了很多的嘗試之后得出的總結(jié), 也作為自己以后可能重復(fù)這個(gè)過程的筆記.
          從哪里引用到的內(nèi)容都加上鏈接了.歡迎大家討論.

          首先下載并編譯Android源碼是必須的, 這就要求你必須要安裝Linux, 我自己用的是Ubuntu 11.04,
          在虛擬機(jī)裝Ubuntu的話, 我給1個(gè)G的內(nèi)存而已, 感覺已經(jīng)是足夠了, 不像網(wǎng)上說的需要至少1.5個(gè)G,
          因?yàn)槲业膬?nèi)存只有2G,如果分給虛擬機(jī)1.5的話,反而會(huì)卡得完全動(dòng)不了.

          而且整個(gè)過程我都是在root下執(zhí)行的, 如果不是root, 建議使用sudo -sH來進(jìn)行以下所有操作.
          雖然官方是要求64位的操作系統(tǒng)才能編譯, 但是我用的是32位的, 如何修改我會(huì)在下文說明.
          還有一個(gè)問題是只有用Ubuntu 11.04這個(gè)特定版本編譯的時(shí)候才會(huì)出現(xiàn)的,不知道會(huì)不會(huì)在新版的源碼已經(jīng)被修復(fù)了,
          如果編譯的時(shí)候出現(xiàn)出現(xiàn)的"field 'arch' has incomplete type"錯(cuò)誤可以看我之前的這篇文章:
          ( http://www.aygfsteel.com/jayslong/archive/2011/05/12/fix_the_problem_that_android_source_code_wont_compile_in_ubuntu_11_04.html )


          具體如何repo獲取源碼網(wǎng)上到處都是教程,我就不說了.嚴(yán)格按官方的教程來是沒問題的.
          另外提醒一點(diǎn),repo的時(shí)候用參數(shù) "-j 數(shù)字" 可以使用多線程下載.

          需要注意的一點(diǎn)的還有很多教程還在說必須用JDK1.5 編譯源碼, 1.6編譯SDK之類的,
          其實(shí)是已經(jīng)不需要了, 最新版的Android 只要直接裝sun-java6-jdk就好了. (apt-get找不到就更新你的源或者直接去官網(wǎng)下)

          然后如果你用的是32位的Linux, 編譯之前必須做如下修改: (方法來自: http://blog.csdn.net/yihui8/archive/2011/03/10/6237433.aspx )


          .
          /external/clearsilver/cgi/Android.mk 
          .
          /external/clearsilver/java-jni/Android.mk 
          .
          /external/clearsilver/util/Android.mk 
          .
          /external/clearsilver/cs/Android.mk

          四個(gè)文件中的
          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))) 


          做完以上修改之后, 就可以開始編譯源碼了, cd到源碼根目錄下, 打"make". 然后去看場(chǎng)電影吧. 回來就編好了..
          這一步會(huì)在android/out/target/product/generic/下面生產(chǎn)3個(gè)后綴為img的文件,建議拷貝一份出來吧,
          我就遇到過這幾個(gè)文件莫名消失結(jié)果需要重新make的情況.

          然后回來如果你愿意的話,再執(zhí)行一下make sdk. 具體查看這里的第6和第7點(diǎn)吧.
          ( http://blog.csdn.net/jackyu613/archive/2010/07/31/5778646.aspx )
          如果你跟我一樣只需要自己修改并編譯和測(cè)試系統(tǒng)app, 是不需要make sdk這一步的

          然后工作之前需要配置一下環(huán)境變量:  

          gedit ~/.bashrc 注意修改成你自己放源碼的路徑, 將以下2行添加到文件末尾:

          export PATH
          =$PATH:/home/xxx/android/out/host/linux-x86/bin
          export ANDROID_PRODUCT_OUT
          =/home/xxx/android/out/target/product/generic

          最后記得執(zhí)行一下
          source ~
          /.bashrc


          并且在源碼根目錄下執(zhí)行一下:

          . build/envsetup.sh

          會(huì)幫你啟用幾個(gè)新的命令.比如下面我們要用到的"mmm"

          然后就可以去修改你想要修改的系統(tǒng)app了, 全部都在android/packages下面.
          具體修改的例子我會(huì)另外寫一個(gè)文章來說,這次先說整個(gè)流程吧.
          參考自( http://www.devp.com/home.php?mod=space&uid=11248&do=blog&id=1040 )

          比如我修改的是系統(tǒng)的英文輸入法, 位于android/packages
          修改完后直接在android目錄下執(zhí)行, 指定到包含有Android.mk文件的目錄就對(duì)了 :

          mmm packages/imputmethods/LatinIME/

          很快就會(huì)編譯好了
          (千萬不要在根目錄不加任何參數(shù)直接執(zhí)行"mmm",不然你會(huì)后悔的,這等同于之前花了好長(zhǎng)時(shí)間的"make")

          然后就要把編譯好的文件安裝到模擬器中, 你可以之前就啟動(dòng)了模擬器, 也可以現(xiàn)在才啟動(dòng), 都可以的,
          安裝前后也不需要重啟模擬器, 執(zhí)行了adb install 直接可以看到效果.

          啟動(dòng)模擬器可以在android/out/target/product/generic/ 下直接執(zhí)行這個(gè)命令:

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

          然后用這個(gè)命令把自己編譯好的apk文件傳入模擬器:  

          adb install -/home/xxx/android/out/target/product/generic/system/app/***.apk

          到這里基本就可以實(shí)現(xiàn)整個(gè)修改和調(diào)試系統(tǒng)app的流程啦,
          其實(shí)前面都是一勞永逸的環(huán)境配置工作,實(shí)際上一直要用到的就是mmm和adb install -r 這兩個(gè)命令而已

          因?yàn)橛行┫到y(tǒng)app涉及到j(luò)ni的部分, 在Eclipse下面查看項(xiàng)目是會(huì)出錯(cuò)的, 我也不知道怎么實(shí)現(xiàn)在Eclipse正常調(diào)試,
          所以只能是在文本編輯器里直接修改再install到模擬器里查看效果.

          posted on 2011-05-17 12:10 ApolloDeng 閱讀(6552) 評(píng)論(3)  編輯  收藏 所屬分類: 分享 、筆記Android 、Linux

          FeedBack:
          # re: 分享在Linux下編譯Android源代碼并修改調(diào)試系統(tǒng)自帶應(yīng)用的方法 2011-05-17 16:59 蕭渡
          從人人前來圍觀龍兄  回復(fù)  更多評(píng)論
            
          # re: 分享在Linux下編譯Android源代碼并修改調(diào)試系統(tǒng)自帶應(yīng)用的方法 2011-05-17 19:20 Aloong
          @蕭渡
          噢! 歡迎歡迎哇哈哈...  回復(fù)  更多評(píng)論
            
          # re: 分享在Linux下編譯Android源代碼并修改調(diào)試系統(tǒng)自帶應(yīng)用的方法 2011-12-10 21:28 淘寶靴子
          到這里基本就可以實(shí)現(xiàn)整個(gè)修改和調(diào)試系統(tǒng)app的流程啦,
          其實(shí)前面都是一勞永逸的環(huán)境配置工作,實(shí)際上一直要用到的就是mmm和adb install -r 這兩個(gè)命令而已

          因?yàn)橛行┫到y(tǒng)app涉及到j(luò)ni的部分, 在Eclipse下面查看項(xiàng)目是會(huì)出錯(cuò)的, 我也不知道怎么實(shí)現(xiàn)在Eclipse正常調(diào)試,
          所以只能是在文本編輯器里直接修改再install
          試試看。  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 揭西县| 汶川县| 惠安县| 修文县| 内乡县| 钟山县| 阿勒泰市| 阿图什市| 石景山区| 雅安市| 乐昌市| 庄河市| 连山| 独山县| 进贤县| 剑河县| 海宁市| 贵州省| 兰考县| 中西区| 星子县| 宜都市| 五峰| 杂多县| 绥化市| 炉霍县| 合阳县| 金秀| 南郑县| 泾源县| 库车县| 阿拉尔市| 新乐市| 朝阳区| 屯留县| 华阴市| 海丰县| 齐河县| 武宁县| 应用必备| 武定县|