在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

做者:流星

相关文章
相关标签/搜索