Android Building System 分析.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android Building System 分析

Android Building System 分析by thinker2 Columns關鍵字:?Android?coding想要了解一個系統,我常會從makefile或是 building system 下手,以了解系統組成元素為何? 目錄結構為何? 對於?Android?,我也不例外。透過了解 building system ,我們能知道如何新增、修改、刪除程式,並保有完整性,順利編譯出結果。設定檔Android?building system 包括幾種重要的設定檔,Android.mkAndroidProducts.mktarget_os-.mk, host_-.mk and?-.mkBoardConfig.mkbuildspec.mkAndroid.mk 是 module 和 package 的設定檔,每個 module/package 的目錄下都會有一個Android.mk。所謂的 module 是指系統的 native code ,相對於用 Java 寫成的?Android?application 稱為 package。AndroidProducts.mk 則設定 product 配置。product即特定系統版本,透過編譯不同 product ,產生不同軟體配置內容,安裝不同的 application。 Product 可視為特定專案,產生特定規格系統。BoardConfig.mk 是為 product 主板做設定,像是 driver 選擇、設定。*-.mk 則是針對選擇的作業系統和 CPU 架構,進行相關設定。buildspec.mk是位於 source 根目錄下,為進行編譯者所做之額外設定。例如,可在此選擇要產生的 product 、平台、額外的 module/package 等。參數build/envsetup.sh實作一個 mm 指令,以編譯單一 module,不需編譯整個 source tree。ONE_SHOT_MAKEFILE 這個makefile變數/參數就是用以實作這個功能。使用方法是在執行 make 時,將該變數指定為 module 的?Android.mk。make ONE_SHOT_MAKEFILE=透過定義 CREATE_MODULE_INFO_FILE , building system 會將所有 module 資訊列在 $(PRODUCT_OUT)/module-info.txt檔案裡。make CREATE_MODULE_INFO_FILE=true設定 BUILD_TINY_ANDROID=true , building system 產生一個簡單的 image ,以測試硬體的可用度。此功能用於移植的早期階段,以快速 bring up 。HOST_BUILD_TYPE 和 TARGET_BUILD_TYPE 指定 building system 產生 binary 的目的為 debug 或 release 。透過設定此二變數,能產生包含 debug information 的binry。debugrelease這些參數,也可設於 buildspec.mk裡,以避免開發過程不斷的重新指定。Goals一般編輯整個?Android?系統,就是使用 droid 這個 goal。droid會產生一個完整的系統,包括bootloader、kernel、系統程式、模組和應用程式。showcommands和 droid 功能相同,但 droid 在編譯過程不顯示所使用的指令。透過showcommands這個 goal, building system 顯示過程中每一個步驟的詳細指令。Makefile的流程初始化相關變數偵測編譯環境和目標環境決定目標 product讀取 product 的設定讀取 product 所指定之目標平台架構設定選擇toolchain指定編譯參數 (*-.mk)清除輸出目錄設定/檢查版本編號讀取所有 BoardConfig.mk 檔案讀取所有 module 的設定根據設定,產生必需的 rule產生 image以上的主要流程都是由 build/core/main.mk所安排。初始化和偵測由 build/core/config.mk所進行。 build/core/envsetup.mk 檢查 developer 的設定 (buildspec.mk) ,並檢查執行環境,以決定輸出目錄、項目。build/core/config.mk 本身還依據參數,決定解譯時的相關參數。像是 compiler 的路徑、flags,lex、yacc的路徑參數等。關於 product 的相關設定,則是由 build/core/product_config.mk所處理,使用 build/core/p

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档