在android源碼中單獨編譯modkoid工程碰見的問題

modkoid工程提供了一個LedTest示例程序,是臺灣的Jollen用於培訓的。android

對於理解android層次結構、Hal編程方法都很是有意義。編程

下載方法:#svn checkout http://mokoid.googlecode.com/svn/trunk/mokoid-read-onlyapp

在android源碼中單獨編譯modkoid工程時報錯,具體操做以下:svn

將modkoid工程拷貝到android源碼的根目錄下,而後進入到android源碼的根目錄下,執行以下命令:ui

$ source  mydroid/build/envsetup.shgoogle

$mmm   mydroid/modkoiddebug

錯誤日誌以下:日誌

make:進入目錄'/mnt/bak/mydroid'code

build/core/base_rules.mk:78: *** Module name: led.goldfishcomponent

build/core/base_rules.mk:79: *** Makefile location: mokoid/hardware/modules/led

build/core/base_rules.mk:80: *

build/core/base_rules.mk:81: * Each module must use a LOCAL_MODULE_TAGS in its

build/core/base_rules.mk:82: * Android.mk. Possible tags declared by a module:

build/core/base_rules.mk:83: *

build/core/base_rules.mk:84: *   optional, debug, eng, tests, samples

build/core/base_rules.mk:85: *

build/core/base_rules.mk:86: * If the module is expected to be in all builds

build/core/base_rules.mk:87: * of a product, then it should use the

build/core/base_rules.mk:88: * "optional" tag:

build/core/base_rules.mk:89: *

build/core/base_rules.mk:90: *   Add "LOCAL_MODULE_TAGS := optional" in the

build/core/base_rules.mk:91: *   Android.mk for the affected module, and add

build/core/base_rules.mk:92: *   the LOCAL_MODULE value for that component

build/core/base_rules.mk:93: *   into the PRODUCT_PACKAGES section of product

build/core/base_rules.mk:94: *   makefile(s) where it's necessary, if

build/core/base_rules.mk:95: *   appropriate.

build/core/base_rules.mk:96: *

build/core/base_rules.mk:97: * If the component should be in EVERY build of ALL

build/core/base_rules.mk:98: * products, then add its LOCAL_MODULE value to the

build/core/base_rules.mk:99: * PRODUCT_PACKAGES section of

build/core/base_rules.mk:100: * build/target/product/core.mk

build/core/base_rules.mk:101: *

build/core/base_rules.mk:102: *** user tag detected on new module - user tags are only supported on legacy modules。 中止。

make:離開目錄「/mnt/bak/mydroid」

經過此次編譯,總結了一點經驗,要學會看日誌。

日誌明白的告訴了錯誤所在: Makefile location: mokoid/hardware/modules/led

查找緣由 ,是由於led文件下的Android.mk文件裏面,LOCAL_MODULE_TAGS變量設置的有問題。

LOCAL_MODULE_TAGS定義了當前模塊的類型,編譯器在編譯時會根據類型的不一樣會有些差異,LOCAL_MODULE_TAGS能夠被定義爲如下類型:

user: 指該模塊只在user版本下才編譯

eng: 指該模塊只在eng版本下才編譯

tests: 指該模塊只在tests版本下才編譯

optional:指該模塊在全部版本下都編譯

若是設置不正確,tags的module不會被編譯至系統中。

將工程下的全部Android.mk的LOCAL_MODULE_TAG設置爲:

LOCAL_MODULE_TAGS :=optional

這樣設置好之後,從新編譯,編譯經過。

編譯成功後會以下路徑生成apk文件,庫文件,jar包等

out/target/product/smdkv210/system/app/LedClient.apk

out/target/product/smdkv210/system/app/LedTest.apk

out/target/product/smdkv210/system/framework/ledctl.jar

out/target/product/smdkv210/system/lib/hw/led.smdkv210.so

out/target/product/smdkv210/system/lib/libled.so

out/target/product/smdkv210/system/lib/libmokoid_runtime.so

本文歡迎轉載,轉載請註明出處與做者

出處:http://blog.sina.com.cn/staratsky

做者:流星

相關文章
相關標籤/搜索