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
作者:流星
分享到:
相关推荐
如何单独编译Android源代码中的模块
Android Launcher源码下载,PagedView,PagedViewIcon
Android-x86源码的获得及编译,移植Android到x86架构的机器上!
单独编译Android中的模块,并附上常见问题列表
这篇文档详细描述了在android源码上编译APK的过程
安卓Android源码——Android Launcher 源码修改可编译.zip
Android Launcher 源码修改可编译.zip源码资源下载Android Launcher 源码修改可编译.zip源码资源下载
android源码的编译.pdfandroid源码的编译.pdfandroid源码的编译.pdf
AndroidKiller的基础上修复反编译源码卡死的问题,并且更新最新ShakaApktool.jar和apktool.jar
本文主要讲解单独编译Android 源代码中的模块,这里对Android源码单独编译模块,做出了详细的步骤,希望能帮助研究Android 源代码的朋友
Android 源码编译的jar包,包括4.4和5.0版的
这个文章很好,涵盖了比较全面的Android源码编译的知识. 包括编译系统镜像, SDK以及单独模块和应用.
Android高级应用源码-Android Launcher 源码修改可编译.zip
Android源码编译
android 源码编译环境搭建,LINUX环境。
Android 源码编译过程, 编译过程中标准输出
android P(android9) 源码编译.ipr.iml文件。直接将这两个文件放到源码根目录就可以了,即可导入android studio
在不同操作系统下编译Android源码需要更改一些Android源码的配置项,脚本用于自动化更改配置项.zip 在不同操作系统下编译Android源码需要更改一些Android源码的配置项,脚本用于自动化更改配置项.zip 在不同操作系统...
仔细讲述了cygwin安装的过程 android 源码下载的步骤 以及ndk编辑的过程,此文档是目前截止今天最完整的
这里详细介绍的了,android源码编译环境搭建方法