posts - 33, comments - 0, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          導讀:對于Android開發者來說,成系列的技術文章對他們的技術成長幫助最大。如下是我們向您強烈推薦的主題為Android開發的第一個系列文章。

          文章皆來自CSDN網友maxleng的專欄,maxleng是名Android愛好者,長期從事嵌入式系統及手機軟件系統研究,自2010年4月起,在CSDN上先后發表28篇《Android核心分析》系列博文,收到網友們的極高評價。《Android核心分析》整理如下:

          1. 方法論探討之設計意圖

          2. 方法論探討之概念空間篇

          3. 手機之硬件形態

          4. 手機的軟件形態

          5. Android基本空間劃分

          6. IPC框架分析(Binder,Service,Service manager)

          7. Service詳解

          8. Android啟動過程詳解

          9. Zygote Service詳解

          10.Android GWES基本原理篇

          11.Android GWES消息系統篇

          12.Android核心分析之Android GEWS窗口管理基本架構篇

          13.Android GWES窗口管理詳解

          14.Android GWES輸入系統篇

          15.Android GWES輸入系統之輸入路徑詳解

          16.Android電話系統-概述篇

          17.Android電話系統之Rild服務詳解

          18.Android電話系統之GSMCallTracker

          19.Android電話系統之RIL-Java

          20.Android應用程序框架之無邊界設計意圖

          21.Android應用框架之AndroidApplication

          22.Android應用框架之Activity

          22.Andoird GDI之基本原理及其總體框架

          23.Android GDI之顯示緩沖管理

          24.Android GDI之共享緩沖區機制

          25.Android GDI之共享緩沖區機制

          26.Android GDI之SurfaceFlinger

          27.Android GDI之SurfaceFlinger之動態結構示意圖

          28.Android GDI之Surface&Canvas

          原文地址:http://mobile.csdn.net/a/20110209/291511.html

          posted @ 2011-09-23 15:34 馬航 閱讀(109) | 評論 (0)編輯 收藏

          新手學堂:嵌入式Linux操作系統學習規劃
          ARM+LINUX路線,主攻嵌入式Linux操作系統及其上應用軟件開發目標:
          (1) 掌握主流嵌入式微處理器的結構與原理(初步定為arm9)
          (2) 必須掌握一個嵌入式操作系統 (初步定為uclinux或linux,版本待定)
          (3) 必須熟悉嵌入式軟件開發流程并至少做一個嵌入式軟件項目。
          從事嵌入式軟件開發的好處是:
          (1)目前國內外這方面的人都很稀缺。這一領域入門門檻較高,所以非專業IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,大多數人無條件接觸。
          (2)與企業計算等應用軟件不同,嵌入式領域人才的工作強度通常低一些(但收入不低)。
          (3)哪天若想創業,搞自已的產品,嵌入式不像應用軟件那樣容易被盜版。硬件設計一般都是請其它公司給訂做(這叫“貼牌”:OEM),都是通用的硬件,我們只管設計軟件就變成自己的產品了。
          (4)興趣所在,這是最主要的。
          從事嵌入式軟件開發的缺點是:
          (1)入門起點較高,所用到的技術往往都有一定難度,若軟硬件基礎不好,特別是操作系統級軟件功底不深,則可能不適于此行。
          (2)這方面的企業數量要遠少于企業計算類企業。
          (3)有少數公司經常要碩士以上的人搞嵌入式,主要是基于嵌入式的難度。但大多數公司也并無此要求,只要有經驗即可。
          (4)平臺依托強,換平臺比較辛苦。
          興趣的由來:
          1、成功觀念不同,不虛度此生,就是我的成功。
          2、喜歡思考,挑戰邏輯思維。
          3、喜歡C
          C是一種能發揮思維極限的語言。關于C的精神的一些方面可以被概述成短句如下:
          相信程序員。
          不要阻止程序員做那些需要去做的。
          保持語言短小精干。
          一種方法做一個操作。
          使得它運行的夠快,盡管它并不能保證將是可移植的。
          4、喜歡底層開發,討厭vb類開發工具(并不是說vb不好)。
          5、發展前景好,適合創業,不想自己要死了的時候還是一個工程師。
          方法步驟:
          1、基礎知識:
          目的:能看懂硬件工作原理,但重點在嵌入式軟件,特別是操作系統級軟件,那將是我的優勢。
          科目:數字電路、計算機組成原理、嵌入式微處理器結構。
          匯編語言、C/C++、編譯原理、離散數學。
          數據結構和算法、操作系統、軟件工程、網絡、數據庫。
          方法:雖科目眾多,但都是較簡單的基礎,且大部分已掌握。不一定全學,可根據需要選修。
          主攻書籍:the c++ programming language(一直沒時間讀)、數據結構-C2。

          2、學習linux:
          目的:深入掌握linux系統。
          方法:使用linux—〉linxu系統編程開發—〉驅動開發和分析linux內核。先看深,那主講原理??磶妆楹?,看情景分析,對照深看,兩本交叉,深是綱,情是目。剖析則是0.11版,適合學習。最后深入代碼。
          主攻書籍:linux內核完全剖析、unix環境高級編程、深入理解linux內核、情景分析和源代。
          3、學習嵌入式linux:
          目的:掌握嵌入式處理器其及系統。
          方法:(1)嵌入式微處理器結構與應用:直接arm原理及匯編即可,不要重復x86。
          (2)嵌入式操作系統類:ucOS/II簡單,開源,可供入門。而后深入研究uClinux。
          (3)必須有塊開發板(arm9以上),有條件可參加培訓(進步快,能認識些朋友)。
          主攻書籍:毛德操的《嵌入式系統》及其他arm9手冊與arm匯編指令等。

          4、深入學習:
          A、數字圖像壓縮技術:主要是應掌握MPEG、mp3等編解碼算法和技術。
          B、通信協議及編程技術:TCP/IP協議、802.11,Bluetooth,GPRS、GSM、CDMA等。
          C、網絡與信息安全技術:如加密技術,數字證書CA等。
          D、DSP技術:Digital Signal Process,DSP處理器通過硬件實現數字信號處理算法。
          說明:太多細節未說明,可根據實際情況調整。重點在于1、3,不必完全按照順序作。對于學習c++,理由是c++不只是一種語言,一種工具,她還是一種藝 術,一種文化,一種哲學理念、但不是拿來炫耀得東西。對于linux內核,學習編程,讀一些優秀代碼也是有必要的。
          注意: 要學會舉一反多,有強大的基礎,很多東西簡單看看就能會。想成為合格的程序員,前提是必須熟練至少一種編程語言,并具有良好的邏輯思維。一定要理論結合實踐。
          不要一味鉆研技術,雖然擠出時間是很難做到的,但還是要留點余地去完善其他的愛好,比如宇宙,素描、機械、管理,心理學、游戲、科幻電影。還有一些不愿意做但必須要做的!
          技術是通過編程編程在編程編出來的。永遠不要夢想一步登天,不要做浮躁的人,不要覺得路途漫上。而是要編程編程在編程,完了在編程,在編程!等機會來了在創業(不要相信有奇跡發生,盲目創業很難成功,即便成功了發展空間也不一定很大)。
          嵌入式書籍推薦

          Linux基礎
          1、《Linux與Unix Shell 編程指南》
          C語言基礎
          1、《C Primer Plus,5th Edition》【美】Stephen Prata著
          2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)著
          3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
          4、《嵌入式Linux應用程序開發詳解》
          Linux內核
          1、《深入理解Linux內核》(第三版)
          2、《Linux內核源代碼情景分析》毛德操 胡希明著
          研發方向
          1、《UNIX Network Programming》(UNP)
          2、《TCP/IP詳解》
          3、《Linux內核編程》
          4、《Linux設備驅動開發》(LDD)

          5、《Linux高級程序設計》 楊宗德著
          硬件基礎
          1、《ARM體系結構與編程》杜春雷著
          2、S3C2410 Datasheet
          英語基礎
          1、《計算機與通信專業英語》
          系統教程
          1、《嵌入式系統――體系結構、編程與設計》
          2、《嵌入式系統――采用公開源代碼和StrongARM/Xscale處理器》毛德操 胡希明著
          3、《Building Embedded Linux Systems》

          4、《嵌入式ARM系統原理與實例開發》 楊宗德著
          理論基礎
          1、《算法導論》
          2、《數據結構(C語言版)》
          3、《計算機組織與體系結構?性能分析》
          4、《深入理解計算機系統》【美】Randal E. Bryant David O’Hallaron著
          5、《操作系統:精髓與設計原理》
          6、《編譯原理》
          7、《數據通信與計算機網絡》
          8、《數據壓縮原理與應用》

          C語言書籍推薦

          1. The C programming language 《C程序設計語言》
          2. Pointers on C 《C和指針》
          3. C traps and pitfalls 《C陷阱與缺陷》
          4. Expert C Lanuage 《專家C編程》
          5. Writing Clean Code —–Microsoft Techiniques for Developing Bug-free C Programs
          《編程精粹–Microsoft 編寫優質無錯C程序秘訣》
          6. Programming Embedded Systems in C and C++ 《嵌入式系統編程》
          7.《C語言嵌入式系統編程修煉》
          8.《高質量C++/C編程指南》林銳

          盡可能多的編碼,要學好C,不能只注重C本身。算法,架構方式等都很重要。

          posted @ 2011-09-22 14:25 馬航 閱讀(106) | 評論 (0)編輯 收藏

          網上搜了N多解決方法,但是很多將log級別的,用法的,更多的是如何在logcat中設置filter進行log的過濾與查看,但是我遇到的問題是,模擬器怎么著都OK,但真機、手機進行開發調試的時候卻看不到log信息,這是很惱人的事情(畢竟模擬器跑起來太慢了)。

          剛開始沒有查到好的方法,就用try catch把exception打到一個alertdialog中,但是這樣只能看個大概,繞這個圈子沒用,最后還是在eoe的論壇上看到了解決辦法,恐怕原因是rom本身沒有打開log的開關

          問題表現:連接手機與電腦后,驅動安裝正確,USB調試模式打開,在DDMS中可以看到device及其進程的信息,但是logcat中就是沒有信息輸出
          問題原因:一些rom默認關閉logcat
          問題說明:ddms中設備名字顯示為問號不影響,即adb get-serialno顯示為問號不影響.
          解決方法:
          1.需要root權限(部分rom不需要)
          2.打開logcat,并設置level,執行命令如下(android 升級之后 adb 在 platform-tools中,不在tools中)
          adb shell
          echo 1 > /sys/kernel/logger/log_main/enable
          說明:將1寫入日志開關文件,1為開,0為關
          echo 2 >/sys/kernel/logger/log_main/priority
          說明:將代表level的2寫入優先級文件
          3.重啟adb,如果使用eclipse,先關閉eclipse,再重啟adb,再啟動eclipse
          adb kill-server
          adb start-server
          4.此時logcat應該可以工作了,如果仍舊不工作,則更新adb
          android update adb
          5.重復第三步,此時logcat應該可以工作了,如果仍舊不工作,找到個人主目錄下的android目錄,如C:\Documents and Settings\Administrator\.android
          找到這個目錄下的adb_usb.ini文件,其內容默認只有三行,全為注釋,在后面添加一行,內容為0x12d1
          6.重復第三步,此時logcat應該可以工作了

          轉自:http://www.gobbin.cn/2011/02/16/android-phone-logcat/

          posted @ 2011-09-06 16:10 馬航 閱讀(11240) | 評論 (0)編輯 收藏

          1.          app2sd是什么
          app2sd
          就是把應用程序放在SD卡上。有些android手機的用戶數據分區(userdata)比較?。ū热?/span>G1只有76M),dalvikcache和用戶數據就占了大半,使得安裝了幾個軟件后就沒有空間了。為了安裝更多軟件,在SD卡上劃出部分空間用于存在新軟件和數據,使我們的手機可以使用更多軟件。

          2.          原理
          一般情況下都SD卡都默認分成一個windows可識別的分區(FAT)。因為有linux系統的權限問題,為了讓它可以存放軟件,需要把SD卡的一部分劃分成Linux的使用的ext2文件系統,然后在開機時把此分區掛載到某處,并通過鏈接的方法,讓系統從SD卡中讀取軟件

          3.          實現

          1)         SD卡分區

          a)          使用Linux系統中的工具fdisk,它是命令行工具,很快很簡單

          b)         Windows下的圖形化工具
          具體步驟見http://www.3haoweb.cn/a/digital/mobile/2010/0609/2273.html

          2)         修改boot.img使得新分區在啟動時被自動掛載

          a)          說明:

                                                 i.              也可以從網上下載帶app2sd功能的update.zip包,升級整個系統,但是那樣的話還要備份設置、數據、軟件太麻煩,所以我選擇修改我手機中自帶的boot.img,以最小的修改來實現功能

                                                ii.              修改boot.img中的initrc(系統啟動時運行的腳本,自動掛載SD卡的ext2分區)

          b)         boot.img是什么
          boot.img
          包括了2K的文件頭,后面緊跟著是用gzip壓縮過的內核,再后面是一個ramdisk內存盤(系統基本目錄結構的鏡像檔),然后緊跟著第二階段的載入器程序(這個載入器程序是可選的,在某些映像中或許沒有這部分)

          c)          修改本機的boot.img

                                                 i.              使用nandroid備份數據
          任何對系統的修改都要先備份系統數據

                                                ii.              從機器中取出當前的boot.img
          $ export PATH=$PATH:$ANDROID_DIR/out/host/linux-x86/bin/
          $ adb shell
          # cat /proc/mtd/
          查看boot對應的mtdx,一般是mtd2
          # cat /dev/mtd/mtd2 > /sdcard/boot.img
          假設boot對應mtd2
          # mkdir /system/sd1
          建立目錄以掛載分區
          # exit
          $ adb pull /sdcard/boot.img ./                 
          復制到PC

                                              iii.              解包
          下載工具split_boot.img.pl
          http://cid-f8aecd2a067a6b17.office.live.com/self.aspx/.Public/android/reference/split^_bootimg.zip
          $ ./split_boot.img.pl boot.img                  
          解包,解出內核和ramdisk包兩部分
          $ mkdir ramdisk; cd ramdisk
          $ gzip -dc ../boot.img-ramdisk.gz |cpio -i

                                              iv.              修改啟動腳本
          $ vi init.rc 
          如果是亂碼,請使用reset命令恢復一下
          mount 最后加入
          mount ext2 /dev/block/mmcblk0p2 /system/sd1 rw

                                                v.              重新打包
          $ cd ../
          $ mkbootfs ramdisk |gzip > ramdisk-new.gz
          $ mkbooting --cmdline ‘no_console_suspend=1 console=null’ --kernel boot.img-kernel --ramdisk ramdisk-new.gz -o boot_new.img
          (mkbootfs
          ,mkbootimg可以android源碼包中取得,和adb在一個目錄)

                                              vi.              燒寫新包到手機
          $ adb push boot_new.img /sdcard
          $ adb shell
          # cat /dev/zero > /dev/mtd/mtd2 (
          可能找錯沒空間,沒關系)
          # flash_image boot /sdcard/boot_new.im

                                             vii.              驗證是否成功
          然后重啟手機即可,重啟后用以下命令看一下是否分區是否被掛載
          $ adb shell
          $ df 
          如果看到/system/sd1項就成功了

          3)         做鏈接,使系統從SD卡讀取軟件
          建立只對軟件安裝目錄做修改(/data/app),這樣撥出SD后除了后來安裝的軟件不能使用之外,不影響手機基本功能的使用
          $ adb shell
          # mkdir /system/sd1/data/
          # cd /system/sd1/data/

          # busybox cp -a /data/app ./  
          建議做
          # busybox cp -a /data/app-private ./        
          不建議做
          # busybox cp -a /data/dalvik-cache ./
          不建議做
          # busybox cp -a /data/data ./ 
          不建議做
          # rm -r /data/app
          # ln -s /system/sd1/data/app /data/app

          ……
          其它目錄以此類推
          然后重啟手機即可

          4)         注意
          由于launcher數據庫的關系,可能桌面上看不到原來的那些應用了,不過主菜單里是有的,再建一遍快捷方式即可

          4.          參考
          http://kb.cnblogs.com/a/1743704/

          posted @ 2011-09-04 11:15 馬航 閱讀(1028) | 評論 (0)編輯 收藏

            一、 說明

          1.        下載編譯最基本的android源碼,只能在模擬器上使用,無法在真機上使用(不能生成boot.img)。這是因為沒有編譯相關機型的內核和硬件驅動。以下介紹的是用android源碼編譯出對應HTC G1的版本,和燒寫的過程。編譯生成的版本除相機以外,其它功能均正常,穩定性不錯,也很順暢。

          2.        以下步驟都經過驗證(只驗證G1手機),實驗系統ubuntu8.04,實驗日期2010712

          3.        關鍵字: android 2.2 froyo g1 源碼編譯

          二、 編譯

          1.        建立android源碼編譯目錄
          $ export ANDROID=/exports/android/android_2.2/
          $ mkdir -p $ANDROID
          $ cd $ANDROID

          2.        源碼下載
          $ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.2_r1
          $ vi .repo/local_manifest.xml  #
          新建下載配置文件,用以下載內核,編輯內容如下

          注意:其中msm是高通芯片組,path指明下載到源碼目錄中的位置,name指明git上的項目名
          $ repo sync           # 開始下載代碼,此時需要等待較長時間

          3.        編譯內核及無線網絡驅動
          $ cd $ANDROID/kernel
          $ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- msm_defconfig          #
          設定默認的msm配置

          $ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- #
          編譯內核
          $ cd $ANDROID/system/wlan/ti/sta_dk_4_0_4_32
          $ make ARCH=arm CROSS_COMPILE=$ANDROID/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- KERNEL_DIR=$ANDROID/kerne l       
          #編譯無線網絡驅動
          cp $ANDROID/kernel/arch/arm/boot/zImage $ANDROID/device/htc/dream/kernel
          cp $ANDROID/system/wlan/ti/sta_dk_4_0_4_32/wlan.ko $ANDROID/device/htc/dream/wlan.ko

          4.        配置編譯選項
          vi device/htc/dream/AndroidBoard.mk     #若kernel存在,則不重新編譯kernel
          ifeq ($(TARGET_PREBUILT_KERNEL),)        
          TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel
          endif

          file := $(INSTALLED_KERNEL_TARGET)
          ALL_PREBUILT += $(file)
          $(file): $(TARGET_PREBUILT_KERNEL) | $(ACP)
                  $(transform-prebuilt-to-target)

          5.        編譯android源碼
          $ cd $ANDROID
          $ vi buildspec.mk #
          加入如下內容,以支持中文

          CUSTOM_LOCALES:=zh_CN
          $ source build/envsetup.sh
          $ lunch full_dream-userdebug        
          #指定編譯機型
          $ make -j2

          6.        以打補丁的方式加入不提供源碼的庫
          此時的系統可以被燒寫,但電話音樂等基本功能均不正常,需要從系統或其它升級包中提取出源碼中不包含的庫,以支持相應功能。
          HTC網站http://developer.htc.com/adp.html
          下載名為signed-dream_devphone_userdebug-ota-14721.zip的包(一個普通的update包),并把它放在$ANDROID目錄下,并將其改名為dreaem_update.zip
          $ mv signed-dream_devphone_userdebug-ota-14721.zip dream_update.zip
          $ cd device/htc/dream
          $ ./unzip-files.sh  
          此時會提示有幾個庫找不后,后面有對應解決辦法

          $ cd $ANDROID
          $ vi vendor/htc/dream/device_dream-vendor-blobs.mk
          刪除包含以下內容的行,這是由于在update.zip中找不到相應庫,為編譯通過,選去掉它們
          libGLES_qcom.so
          liblvmxipc.so
          liboemcamera.so
          libstagefrighthw.so
          $ make
          $ cp device/htc/dream/wlan.ko out/target/product/dream/system/lib/modules/wlan.ko
          #網卡驅動
          $ make snod        
          重新生成system.img

          三、 把編譯好的軟件燒寫到手機

          usb線連接手機到電腦,按home+power鍵將手機啟動到工程模式,按back鍵準備燒寫
          $ export PATH=$PATH:$ANDROID/out/host/linux-x86/bin        #
          把燒寫工具所在目錄加上路徑
          $ cd out/target/product/dream/
          $ fastboot flash system system.img
          $ fastboot flash boot boot.img
          $ fastboot reboot

          燒寫系統后第一次啟動手機需要幾分鐘,請耐心等

          四、 修改

          1.        安裝中文字體(可以在燒寫前加入,加在此處用以說明在啟動后修改系統的方法)
          $ adb shell
          # su            
          取得root權限

          # mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system    
          使system分區可寫
          # chmod 777 /system/fonts     
          使某個目錄有寫權限
          # exit
          # exit
          $ adb push frameworks/base/data/fonts/DroidSansFallback.ttf /system/fonts/         
          加中文字體
          $ adb reboot

          2.        支持GPRS上網
          添加APN即可上網和發彩信,詳見http://www.andbeta.com/Basics/678.html

          3.        設置帳戶
          添加帳戶時,服務器填寫m.google.com

          五、 參考

          1.        刷寫部分未詳細描述,具體請參考文檔
          http://xy0811.spaces.live.com/blog/cns!F8AECD2A067A6B17!1452.entry

          2.        源碼編譯部分未詳細描述,具體請參考文檔
          http://xy0811.spaces.live.com/blog/cns!F8AECD2A067A6B17!1364.entry


          轉自:http://blog.csdn.net/xieyan0811/article/details/5931573

          posted @ 2011-09-04 11:03 馬航 閱讀(409) | 評論 (0)編輯 收藏

          在android的設計中,谷歌設計了一套專門為嵌入式設備使用的bionic C庫,以替換原有的GUN Libc,這個精簡的bionic庫據說只有200多K,所以如果只想使用這個精簡的C庫像在linux下一樣 開發C程序,基本是不可能的。當然如果只想讓其在shell中運行還是可以做到的。

          因為編譯完的目標程序是在android下運行,就要使用交叉編譯的工具,在下面地址下載:

          http://www.codesourcery.com/gnu_toolchains/arm/download.html

          下載完之后,bin目錄下的arm-none-linux-gnueabi-gcc就是交叉編譯器了

          #include <stdio.h>
          int main() {
          	printf("nihao a\n");
          	printf("你好 啊\n");
          	return 1;
          }
          

          輸入一下命令:

          ./arm-none-linux-gnueabi-gcc hello.c -o hello -static

          -static選項在這里是必須的,否則會出現”not found”的錯誤。

          然后就可以把編譯好的hello傳到手機上運行了。不過這里有個前提條件,要求android機器必須是root過的,好像簡單的z4root還不行,必須使用更徹底的root方法,關于如何root,這里就不再贅述了,可以參考相關root的帖子。

          adb push hello /dev/sample/

          這里要上傳的目錄必須是root用戶所有的。

          然后就是運行程序,可以在adb shell里測試

          adb shell

          cd /dev/sample/

          chmod 777 hello

          ./hello

          或者在手機上安裝超級終端,在終端里運行

          ./hello

          posted @ 2011-09-02 09:43 馬航 閱讀(240) | 評論 (0)編輯 收藏

          http://bbs.hiapk.com/thread-553691-1-1.html

          在ubuntu下adb找不到設備的解決方法:

          需要在Windows下鎖定端口就好了

          在adb shell中輸入如下命令:

          echo 22>/sys/devices/platform/msm_hsusb_periphera/fixusb 

          posted @ 2011-09-01 17:20 馬航 閱讀(135) | 評論 (0)編輯 收藏

          一、使用git下載android內核部分源碼

          首先新建要保存android內核源碼的目錄

          mkdir android_kernel

          cd android_kernel

          android kernel的網站http://android.git.kernel.org/

          git clone git://android.git.kernel.org/kernel/common.git

          下載android內核源碼,完成之后會看到common目錄,內核的源碼就算下載完成了

          如果想下載某一內核的版本,可以使用下面幾個命令:

          git branch -a // 顯示所有的分支

          git branch -r // 顯示romote端的分支

          git checkout // 檢出某一分支

          二、設置交叉編譯環境

          交叉編譯的環境在android源碼已經存在,源碼的下載可以參考《下載編譯android源碼》。在源碼目錄的android_source/prebuilt/linux-x86/toolchain/,可以看到多個交叉編譯的工具

          mac@mac-desktop:~/works/android_dev/prebuilt/linux-x86/toolchain$ ls -all

          總用量 44

          drwxr-xr-x 9 mac mac 4096 2011-08-28 15:16 arm-eabi-4.2.1

          drwxr-xr-x 9 mac mac 4096 2011-08-28 15:16 arm-eabi-4.3.1

          drwxr-xr-x 10 mac mac 4096 2011-08-28 15:16 arm-eabi-4.4.0

          drwxr-xr-x 10 mac mac 4096 2011-08-28 15:16 arm-eabi-4.4.3

          drwxr-xr-x 10 mac mac 4096 2011-08-28 15:16 arm-linux-androideabi-4.4.x

          drwxr-xr-x 6 mac mac 4096 2011-08-28 15:16 i686-android-linux-4.4.3

          drwxr-xr-x 8 mac mac 4096 2011-08-28 15:17 i686-linux-glibc2.7-4.4.3

          drwxr-xr-x 10 mac mac 4096 2011-08-28 15:17 i686-unknown-linux-gnu-4.2.1

          drwxr-xr-x 6 mac mac 4096 2011-08-28 15:17 sh-4.3.3

          一般使用最新版本。

          三、配置編譯時的config文件

          因為編譯的鏡像是要刷到模擬器運行的,模擬器的處理器架構是基于goldfish,所以需要下載有關goldfishconfig文件。下載方法:

          mac@mac-desktop:~/works/kernel-2.6.29$ git branch -a

          * (no branch)

          android-2.6.29

          android-2.6.36

          remotes/origin/HEAD -> origin/android-2.6.36

          remotes/origin/android-2.6.35

          remotes/origin/android-2.6.36

          remotes/origin/android-2.6.37

          remotes/origin/android-2.6.38

          remotes/origin/android-2.6.39

          remotes/origin/android-3.0

          remotes/origin/archive/android-2.6.25

          remotes/origin/archive/android-2.6.27

          remotes/origin/archive/android-2.6.29

          remotes/origin/archive/android-2.6.32

          remotes/origin/archive/android-gldfish-2.6.29

          remotes/origin/archive/android-goldfish-2.6.27

          remotes/origin/linux-bcm43xx-2.6.39

          remotes/origin/linux-wl12xx-2.6.39

          下載remotes/origin/archive/android-gldfish-2.6.29 版本:

          git checkout origin/archive/android-gldfish-2.6.29

          然后就可以到arch/arm/configs下看到goldfish_defconfig這個文件了。

          goldfish_defconfig文件拷貝到android_kernel目錄,并重命名為.config

          四、make編譯

          首先設置環境:

          export PATH=$PATH:~/android_source/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin

          然后修改Makefile

          ARCH = arm #體系結構為arm

          CROSS_COMPILE = arm-eabi- #交叉編譯工具鏈前綴,參考/toolchain/arm-eabi-4.4.3/bin

          然后就可以make編譯了,編譯過程中會連續提示yes/not,能看懂的多注意幾眼,看不懂的一路狂按Enter,最后如果前面的設置正確,編譯完整后會看到下面的提示:

          OBJCOPY arch/arm/boot/zImage

          Kernel: arch/arm/boot/zImage is ready

          五、編譯得到zImage,用新內核啟動模擬器

          ./emulator -avd android2.1 -kernel ~/kernel-2.6.29/arch/arm/boot/zImage

          在模擬器上查看系統信息:

          posted @ 2011-09-01 14:19 馬航 閱讀(1350) | 評論 (0)編輯 收藏

          現在使用linux的朋友越來越多了,在linux下做開發首先就是需要配置環境變量,下面以配置java環境變量為例介紹三種配置環境變量的方法。

           

          1.修改/etc/profile文件

          如果你的計算機僅僅作為開發使用時推薦使用這種方法,因為所有用戶的shell都有權使用這些環境變量,可能會給系統帶來安全性問題。

           

          (1)用文本編輯器打開/etc/profile

           

          (2)在profile文件末尾加入:

          JAVA_HOME=/usr/share/jdk1.5.0_05

          PATH=$JAVA_HOME/bin:$PATH

          CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

          export JAVA_HOME

          export PATH

          export CLASSPATH

           

          (3)重新登錄

           

          注解:

          a. 你要將 /usr/share/jdk1.5.0_05jdk 改為你的jdk安裝目錄

           

          b. linux下用冒號“:”來分隔路徑

           

          c. $PATH / $CLASSPATH / $JAVA_HOME 是用來引用原來的環境變量的值,在設置環境變量時特別要注意不能把原來的值給覆蓋掉了,這是一種常見的錯誤。

           

          d. CLASSPATH中當前目錄“.”不能丟,把當前目錄丟掉也是常見的錯誤。

           

          e. export是把這三個變量導出為全局變量。

           

          f. 大小寫必須嚴格區分。

           

          2. 修改.bashrc文件  

          這種方法更為安全,它可以把使用這些環境變量的權限控制到用戶級別,如果你需要給某個用戶權限使用這些環境變量,你只需要修改其個人用戶主目錄下的.bashrc文件就可以了。

           

          (1)用文本編輯器打開用戶目錄下的.bashrc文件

           

          (2)在.bashrc文件末尾加入:  

          set JAVA_HOME=/usr/share/jdk1.5.0_05

          export JAVA_HOME

          set PATH=$JAVA_HOME/bin:$PATH

          export PATH

          set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

          export CLASSPATH

           

          (3)重新登錄

           

          3. 直接在shell下設置變量

          不贊成使用這種方法,因為換個shell,你的設置就無效了,因此這種方法僅僅是臨時使用,以后要使用的時候又要重新設置,比較麻煩。

           

          只需在shell終端執行下列命令:

          export JAVA_HOME=/usr/share/jdk1.5.0_05

          export PATH=$JAVA_HOME/bin:$PATH

          export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

          posted @ 2011-09-01 11:21 馬航 閱讀(135) | 評論 (0)編輯 收藏

          剛開始學著用linux,對vi命令不是很熟,在網上轉接了一篇。

          vi編輯器是所有Unix及Linux系統下標準的編輯器,它的強大不遜色于任何最新的文本編輯器,這里只是簡單地介紹一下它的用法和一小部分指 令。由于 對Unix及Linux系統的任何版本,vi編輯器是完全相同的,因此您可以在其他任何介紹vi的地方進一步了解它。Vi也是Linux中最基本的文本編 輯器,學會它后,您將在Linux的世界里暢行無阻。

          1、vi的基本概念
            基本上vi可以分為三種狀態,分別是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能區分如下:
              1) 命令行模式command mode)
            控制屏幕光標的移動,字符、字或行的刪除,移動復制某區段及進入Insert mode下,或者到 last line mode。
              2) 插入模式(Insert mode)
            只有在Insert mode下,才可以做文字輸入,按「ESC」鍵可回到命令行模式。
              3) 底行模式(last line mode)
            將文件保存或退出vi,也可以設置編輯環境,如尋找字符串、列出行號……等。
           
              不過一般我們在使用時把vi簡化成兩個模式,就是將底行模式(last line mode)也算入命令行模式command mode)。
          2、vi的基本操作 
          a) 進入vi
              在系統提示符號輸入vi及文件名稱后,就進入vi全屏幕編輯畫面:
             $ vi myfile
          不過有一點要特別注意,就是您進入vi之后,是處于「命令行模式(command mode)」,您要切換到「插入模式(Insert mode)」才能夠輸入文字。初次使用vi的人都會想先用上下左右鍵移動光標,結果電腦一直嗶嗶叫,把自己氣個半死,所以進入vi后,先不要亂動,轉換到 「插入模式(Insert mode)」再說吧!
           
          b) 切換至插入模式(Insert mode)編輯文件
            在「命令行模式(command mode)」下按一下字母「i」就可以進入「插入模式(Insert mode)」,這時候你就可以開始輸入文字了。
           
          c) Insert 的切換
            您目前處于「插入模式(Insert mode)」,您就只能一直輸入文字,如果您發現輸錯了字!想用光標鍵往回移動,將該字刪除,就要先按一下「ESC」鍵轉到「命令行模式(command mode)」再刪除文字。
           
          d) 退出vi及保存文件
            在「命令行模式(command mode)」下,按一下「:」冒號鍵進入「Last line mode」,例如:
          : w filename (輸入 「w filename」將文章以指定的文件名filename保存)
          : wq (輸入「wq」,存盤并退出vi)
          : q! (輸入q!, 不存盤強制退出vi)

          3、命令行模式(command mode)功能鍵
          1). 插入模式
                 按「i」切換進入插入模式「insert mode」,按"i"進入插入模式后是從光標當前位置開始輸入文件;
            按「a」進入插入模式后,是從目前光標所在位置的下一個位置開始輸入文字;
            按「o」進入插入模式后,是插入新的一行,從行首開始輸入文字。
           
          2). 從插入模式切換為命令行模式
                按「ESC」鍵。
           
          3). 移動光標
            vi可以直接用鍵盤上的光標來上下左右移動,但正規的vi是用小寫英文字母「h」、「j」、「k」、「l」,分別控制光標左、下、上、右移一格。
            按「ctrl」+「b」:屏幕往"后"移動一頁。
            按「ctrl」+「f」:屏幕往"前"移動一頁。
            按「ctrl」+「u」:屏幕往"后"移動半頁。
            按「ctrl」+「d」:屏幕往"前"移動半頁。
            按數字「0」:移到文章的開頭。
            按「G」:移動到文章的最后。
            按「$」:移動到光標所在行的"行尾"。
            按「^」:移動到光標所在行的"行首"
            按「w」:光標跳到下個字的開頭
            按「e」:光標跳到下個字的字尾
            按「b」:光標回到上個字的開頭
            按「#l」:光標移到該行的第#個位置,如:5l,56l。
           
          4). 刪除文字
            「x」:每按一次,刪除光標所在位置的"后面"一個字符。
            「#x」:例如,「6x」表示刪除光標所在位置的"后面"6個字符。
            「X」:大寫的X,每按一次,刪除光標所在位置的"前面"一個字符。
            「#X」:例如,「20X」表示刪除光標所在位置的"前面"20個字符。
            「dd」:刪除光標所在行。
            「#dd」:從光標所在行開始刪除#行
           
          5). 復制
            「yw」:將光標所在之處到字尾的字符復制到緩沖區中。
            「#yw」:復制#個字到緩沖區
            「yy」:復制光標所在行到緩沖區。
            「#yy」:例如,「6yy」表示拷貝從光標所在的該行"往下數"6行文字。
            「p」:將緩沖區內的字符貼到光標所在位置。注意:所有與"y"有關的復制命令都必須與"p"配合才能完成復制與粘貼功能。
           
          6). 替換
            「r」:替換光標所在處的字符。
            「R」:替換光標所到之處的字符,直到按下「ESC」鍵為止。
           
          7). 回復上一次操作
            「u」:如果您誤執行一個命令,可以馬上按下「u」,回到上一個操作。按多次"u"可以執行多次回復。
           
          8). 更改
            「cw」:更改光標所在處的字到字尾處
            「c#w」:例如,「c3w」表示更改3個字
           
          9). 跳至指定的行
            「ctrl」+「g」列出光標所在行的行號。
            「#G」:例如,「15G」,表示移動光標至文章的第15行行首。

          4、Last line mode下命令簡介
          在使用「last line mode」之前,請記住先按「ESC」鍵確定您已經處于「command mode」下后,再按「:」冒號即可進入「last line mode」。

          A) 列出行號

           「set nu」:輸入「set nu」后,會在文件中的每一行前面列出行號。

          B) 跳到文件中的某一行

           「#」:「#」號表示一個數字,在冒號后輸入一個數字,再按回車鍵就會跳到該行了,如輸入數字15,再回車,就會跳到文章的第15行。

          C) 查找字符

           「/關鍵字」:先按「/」鍵,再輸入您想尋找的字符,如果第一次找的關鍵字不是您想要的,可以一直按「n」會往后尋找到您要的關鍵字為止。

           「?關鍵字」:先按「?」鍵,再輸入您想尋找的字符,如果第一次找的關鍵字不是您想要的,可以一直按「n」會往前尋找到您要的關鍵字為止。

          D) 保存文件

           「w」:在冒號輸入字母「w」就可以將文件保存起來。

          E) 離開vi

           「q」:按「q」就是退出,如果無法離開vi,可以在「q」后跟一個「!」強制離開vi。

           「qw」:一般建議離開時,搭配「w」一起使用,這樣在退出的時候還可以保存文件。

          5、vi命令列表
          1、下表列出命令模式下的一些鍵的功能:

          h
          左移光標一個字符

          l
          右移光標一個字符

          k
          光標上移一行

          j
          光標下移一行

          ^
          光標移動至行首

          0
          數字"0",光標移至文章的開頭

          G
          光標移至文章的最后

          $
          光標移動至行尾

          Ctrl+f
          向前翻屏

          Ctrl+b
          向后翻屏

          Ctrl+d
          向前翻半屏

          Ctrl+u
          向后翻半屏

          i
          在光標位置前插入字符

          a
          在光標所在位置的后一個字符開始增加

          o
          插入新的一行,從行首開始輸入

          ESC
          從輸入狀態退至命令狀態

          x
          刪除光標后面的字符

          #x
          刪除光標后的#個字符

          X
          (大寫X),刪除光標前面的字符

          #X
          刪除光標前面的#個字符

          dd
          刪除光標所在的行

          #dd
          刪除從光標所在行數的#行

          yw
          復制光標所在位置的一個字

          #yw
          復制光標所在位置的#個字

          yy
          復制光標所在位置的一行

          #yy
          復制從光標所在行數的#行

          p
          粘貼

          u
          取消操作

          cw
          更改光標所在位置的一個字

          #cw
          更改光標所在位置的#個字


          2、下表列出行命令模式下的一些指令
          w filename
          儲存正在編輯的文件為filename

          wq filename
          儲存正在編輯的文件為filename,并退出vi

          q!
          放棄所有修改,退出vi

          set nu
          顯示行號

          /或?
          查找,在/后輸入要查找的內容

          n
          與/或?一起使用,如果查找的內容不是想要找的關鍵字,按n或向后(與/聯用)或向前(與?聯用)繼續查找,直到找到為止。


          對于第一次用vi,有幾點注意要提醒一下:
          1、 用vi打開文件后,是處于「命令行模式(command mode)」,您要切換到「插入模式(Insert mode)」才能夠輸入文字。切換方法:在「命令行模式(command mode)」下按一下字母「i」就可以進入「插入模式(Insert mode)」,這時候你就可以開始輸入文字了。
          2、編輯好后,需從插入模式切換為命令行模式才能對文件進行保存,切換方法:按「ESC」鍵。
          3、保存并退出文件:在命令模式下輸入:wq即可?。▌e忘了wq前面的:)

          posted @ 2011-09-01 10:34 馬航 閱讀(153) | 評論 (0)編輯 收藏

          僅列出標題
          共4頁: 上一頁 1 2 3 4 下一頁 
          主站蜘蛛池模板: 大足县| 昭觉县| 新宁县| 丹寨县| 紫阳县| 抚顺市| 宕昌县| 灵璧县| 满洲里市| 万载县| 横峰县| 治县。| 龙胜| 馆陶县| 湖口县| 石家庄市| 准格尔旗| 平定县| 托里县| 金塔县| 府谷县| 光山县| 望奎县| 若羌县| 汤原县| 日土县| 庆元县| 巴彦淖尔市| 荆州市| 麦盖提县| 利川市| 乌拉特后旗| 镇巴县| 林西县| 汕尾市| 洪雅县| 错那县| 麻栗坡县| 乌兰浩特市| 柞水县| 板桥市|