Android 編譯系統 – envsetup.sh

來源:互聯網
上載者:User

Android build系統可以從相同的源碼編譯出不同的產品,具有不同的packages和選項。為了實現這個功能, 需要一些環境變數來控制哪些需要編譯,以及怎麼編譯。

envsetup.sh就是其中一種方法,envsetup.sh會產生一些工具,使用這些工具可以很方便的對源碼進行編譯,envsetup.sh會include如下檔案

vendor/*/vendorsetup.sh

vendor/*/build/vendorsetup.sh

device/*/*/vendorsetup.sh


$ source build/envsetup.sh

or

$ . build/envsetup.sh

執行完envsetup.sh後,可以使用help來查看可用的工具函數,注意原來shell系統的help命令已經被envsetup.sh的help命令覆蓋


一般情況使用者都會使用choosecombo來定義編譯選項, choosecombo 將會一步一步提示你輸入相應的編譯參數,choosecombo會設定如下參數:

  • product  (generic或者板級的平台名稱)
  • build varient (‘user', 'userdebug', or 'eng'), 三者的區別可參看 http://www.kandroid.org/online-pdk/guide/build_system.html#androidBuildVariants
  • Build for the simulator or the device, 是否支援simulator,會設定TARGET_SIMULATOR環境變數
  • build 類型('release' or 'debug'), 會設定TARGET_BUILD_TYPE環境變數為release或debug

在定義了編譯環境變數後,可以使用m, mm, mmm來進行編譯了,此外envsetup還提供了幾個方便的工具croot, cgrep, jgrep, resgrep, godir。具體含義使用help命令

  • croot
    改變當前路徑到Android源碼的根目錄
  • m
    編譯整個Android項目
  • mm
    編譯目前的目錄下所有的模組
  • mmm
    編譯通過參數指定的模組,例如mmm dalvik/dexdump
  • cgrep
    查詢目前的目錄及子目錄下所有符合查詢條件的C檔案(*.c, *.cc, *.cpp, *.h)
  • jgrep
    查詢目前的目錄及子目錄下所有符合查詢條件的JAVA檔案(*.java)
  • resgrep
    查詢目前的目錄及子目錄下所有資源相關的檔案(*.xml)
  • godir

    改變當前路徑到包含檔案的目錄,如果多個路徑都包含這個檔案,則給出一個列表供選擇。第一次執行godir時,會產生index,這個 index實際就是一個巨大的文字檔,包含所有檔案路徑的列表,可以用vi查看:croot; vi filelist




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.