http://hi.baidu.com/kenny_wju/item/042603c7f4f66d78ced4f83b
最近移植tslib库到android系统,发现编译好的库和测试工具竟然没有输入到out/target/product/Ok6410/system/lib 和out/target/product/Ok6410/system/bin下面,感觉很奇怪,于是下定决心看一下,到底输入到了哪里。
过程如下:
最后查找原因
LOCAL_MODULE_TAGS :=optional
把这项改为
LOCAL_MODULE_TAGS :=eng即可
原因是LOCAL_MODULE_TAGS
TARGET_BUILD_VARIANT 变量的值,默认TARGET_BUILD_VARIANT=eng ,这一项指定编译android时形成的版本风格,一般发布时使用这个值,当然还有user,debuguser等风格值,具体看一下这个链接,如果打不开,翻个墙就可以。
这样设置好以后,重新编译,输出目录out/target/product/Ok6410/system/bin,out/target/product/Ok6410/system/lib里面就有tslib
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
LOCAL_MODULE_TAGS:=eng
当然前提是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:
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