Android编译重要参数LOCAL_MODULE_TAGS

http://hi.baidu.com/kenny_wju/item/042603c7f4f66d78ced4f83b

最近移植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-separatedtags.

This variable controls what build flavors the package getsincluded
in. For example:

    * user: include this inuser/userdebug builds
    * eng: include this in engbuilds
    * tests: the target is atesting target and makes it available for tests
    * optional: don't includethis"

Are these the same as "variants" and if so, which name wouldaffect
the build and how? I've noticed that everything mentioned ina
product's makefile will always get built. But what gets in thefinal
system.img not always the same as what gets built.
http://groups.google.com.tw/group/android-platform/browse_thread/thread/a4f70254a2ceb622

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值