当前位置: 首页 > news >正文

在android源码中单独编译modkoid工程遇见的问题

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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

作者:流星

转载于:https://my.oschina.net/u/157503/blog/172570

相关文章:

  • Hanlp中使用纯JAVA实现CRF分词
  • kotlin使用spring mvc(三)
  • 在Ubuntu 11.04中安装Openresty
  • Nginx 部署HTTPS
  • 浅谈IP地址-1
  • Rafy 领域实体框架演示(2) - 新功能展示
  • 高程读书笔记 第六章 面向对象程序设计
  • oracle常用操作语句
  • 搞定面试官
  • 使用WPF实现3D场景[一]
  • 初识MongoDB
  • STM32之CAN ---CAN ID过滤器分析
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 进制之间的相互转换
  • 值得推荐的10本PHP书籍(转)
  • Flannel解读
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • JS题目及答案整理
  • Node项目之评分系统(二)- 数据库设计
  • oldjun 检测网站的经验
  • React-flux杂记
  • yii2中session跨域名的问题
  • 搭建gitbook 和 访问权限认证
  • 关于for循环的简单归纳
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 力扣(LeetCode)22
  • 通过npm或yarn自动生成vue组件
  • 小程序测试方案初探
  • 学习Vue.js的五个小例子
  • 一道闭包题引发的思考
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • ​flutter 代码混淆
  • ​水经微图Web1.5.0版即将上线
  • #pragma pack(1)
  • #宝哥教你#查看jquery绑定的事件函数
  • $.proxy和$.extend
  • (2)(2.10) LTM telemetry
  • (4)logging(日志模块)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (补)B+树一些思想
  • (黑马C++)L06 重载与继承
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • *1 计算机基础和操作系统基础及几大协议
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .gitignore文件---让git自动忽略指定文件
  • .net core webapi 大文件上传到wwwroot文件夹
  • .Net Core 中间件验签
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [2669]2-2 Time类的定义
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • [flink总结]什么是flink背压 ,有什么危害? 如何解决flink背压?flink如何保证端到端一致性?
  • [GYCTF2020]Ez_Express