modkoid工程提供了一个LedTest示例程序,是台湾的Jollen用于培训的。 对于理解android层次结构、Hal编程方法都非常有意义。 下载方法:#svn checkout http://mokoid.googlecode.com/svn/trunk/mokoid-read-only 在android源码中单独编译modkoid工程时报错,具体操作如下: 将modkoid工程拷贝到android源码的根目录下,然后进入到android源码的根目录下,执行如下命令: $ source mydroid/build/envsetup.sh $mmm mydroid/modkoid 错误日志如下: make:进入目录'/mnt/bak/mydroid' build/core/base_rules.mk:78: *** Module name: led.goldfish 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 作者:流星


更多相关文章

  1. 字符串资源多国语言版本的出错问题
  2. 文件androidAndroid使用PULL解析和生成XML文件
  3. android通过JNI用C/C++创建本地文件
  4. android 开发之文件下载
  5. Android中Gradle配置打包运行不同版本
  6. Android 第三方库使用实例——编写.so库文件

随机推荐

  1. Sql Server之旅——第三站 解惑那些背了
  2. 命名空间引用类的三种方式 和 命名冲突解
  3. 数据库CURD常用操作-select查询-预处理
  4. 12c pdb ora-01033
  5. ansible:unarchive模块解压报错
  6. 2021-2-25:对于 Java MMAP,如何查看文件映
  7. 聊聊gost的DeltaCompare
  8. JavaScript中的一次性定时器和周期性定时
  9. 讲一讲ES6新增的两种数据结构Map和Set
  10. JavaScript 中 call()、apply()、bind()