博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 编译重要参数 LOCAL_MODULE_TAGS
阅读量:5922 次
发布时间:2019-06-19

本文共 2258 字,大约阅读时间需要 7 分钟。

最近移植tslib库到android系统,发现编译好的库和测试工具竟然没有输入到out/target/product/Ok6410/system/lib 和 out/target/product/Ok6410/system/bin下面,感觉很奇怪,于是下定决心看一下,到底输入到了哪里。

过程如下:

    tslib的源代码放到了android2.3 源代码下 vendor 目录 (android2.3中自己添加,如何设置自己的vendor 我的博客中有说明)forlinx/OK6410/的下面. tslib目录下面的 Android.mk写好以后,重新make clean 整个android源码,再次make 编译通过,奇怪的是输出目录 out/target/product/Ok6410/system/bin 下面竟然没有tslib相关的工具,而是放在了out/target/product/OK6410/symbols/system/bin 下面,在做打包文件时,由于没有把symbols文件夹放到文件系统里面,所以校准功能不能实现。(事实上提取文件系统过程中也不应该把symbols文件夹考虑在内)。

最后查找原因 ,是因为tslib文件下的Android.mk文件里面,LOCAL_MODULE_TAGS变量设置的有问题。

LOCAL_MODULE_TAGS :=optional

把这项改为

LOCAL_MODULE_TAGS :=eng即可

原因是LOCAL_MODULE_TAGS 变量跟TARGET_BUILD_VARIANT 变量息息相关。 android系统编译时如果不指定

TARGET_BUILD_VARIANT 变量的值,默认 TARGET_BUILD_VARIANT=eng ,这一项指定 编译android时形成的版本风格,一般发布时使用这个值,当然还有user,debuguser等风格值,具体看一下这个链接,如果打不开,翻个墙就可以。

这样设置好以后,重新编译,输出目录out/target/product/Ok6410/system/bin ,out/target/product/Ok6410/system/lib里面就有tslib 相关的库和测试程序了。

  所以,如果自己需要加额外的模块,或者应用程序,一定要注意Android.mk里面的这个变量,当然了,如果你指定了LOCAL_MODULE_TAGS :=optional,也能编译出来,但是存放的输入路径就不是一般的

out/target/product/Ok6410/system/目录了,而是out/target/product/OK6410/symbols/system/目录。

后来自己在android源代码的 external目录下面放了一个模块,指定该模块的编译风格为LOCAL_MODULE_TAGS :=optional,重新编译,通过以后,竟然直接输出到了out/target/product/Ok6410/system/ 目录,很是惊讶,个人认为还跟模块存放的目录有关.所以无论模块在哪个文件夹下面,最好指定的值跟TARGET_BUILD_VARIANT 相关,如果没指定TARGET_BUILD_VARIANT ,系统会默认设置TARGET_BUILD_VARIANT =eng,你也就指定LOCAL_MODULE_TAGS :=eng 

 

目前自己遇到的 vendor目录,hardware目录下面的模块输出路径跟LOCAL_MODULE_TAGS 有很大的关系

LOCAL_MODULE_TAGS :=optional >> out/target/product/OK6410/symbols/system/

LOCAL_MODULE_TAGS :=eng    >> out/target/product/Ok6410/system/

 

当然前提是TARGET_BUILD_VARIANT=eng .

 

下面是网友遇到的类似问题:

"Set LOCAL_MODULE_TAGS to any number of whitespace-separated tags.

This variable controls what build flavors the package gets included

in. For example:

    * user: include this in user/userdebug builds

    * eng: include this in eng builds
    * tests: the target is a testing target and makes it available for tests
    * optional: don't include this"

Are these the same as "variants" and if so, which name would affect

the build and how? I've noticed that everything mentioned in a
product's makefile will always get built. But what gets in the final
system.img not always the same as what gets built.
 

转载地址:http://esivx.baihongyu.com/

你可能感兴趣的文章
json、javaBean、xml互转的几种工具介绍 (转载)
查看>>
庞果网之高斯公式
查看>>
SQL Server 索引和表体系结构(一)
查看>>
HTML解析利器HtmlAgilityPack
查看>>
ASP.NET MVC5+EF6+EasyUI 后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试...
查看>>
《31天成为IT服务达人》之精准运维
查看>>
[cb]扩展Hierarchy 添加二级菜单
查看>>
MVC验证01-基础、远程验证
查看>>
Flash中的文本应用
查看>>
WCF:如何将net.tcp协议寄宿到IIS
查看>>
基于MVC4+EasyUI的Web开发框架经验总结(7)--实现省份、城市、行政区三者联动...
查看>>
通过tarball形式安装HBASE Cluster(CDH5.0.2)——如何配置分布式集群中的zookeeper
查看>>
亿级数据的高并发通用搜索引擎架构设计(转-张宴)
查看>>
CircleImageManager——圆形 / 圆角图片的工具类
查看>>
C语言 小游戏之贪吃蛇
查看>>
康师傅
查看>>
Tokumx 安装指南(做法如同MongoDB)
查看>>
前端收集
查看>>
Unity3D研究院之IOS本地消息通知LocalNotification的使用(六十七)
查看>>
Android判断App是否在前台运行(转)
查看>>