上周六碰到android在线编译系统中的几个问题,记录如下:
问题1:
问题描述:将java应用放在packages\apps下面一起编译,单独进入应用mm编译,可以install安装到out下面的system/app下面,但根目录上make却不会
原因:LOCAL_MODULE_TAGS :=optional 的模块会被编译,但不会安装到image里面,要想让是optional的模块安装的话,需要将模块名加入到相关product的PRODUCT_PACKAGES里面
解决方法:
修改\build\target\product\generic.mk下面的PRODUCT_PACKAGES,加所编译的应用加入其应用包即可,
问题2:
在libhardware下面moudle中实现copybit及openMMX相关hal接口代码,单独进入应用mm编译,可以install安装到out下面的system/lib/hw下面,但根目录上make却不会
解决方法:
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时形成的版本风格
LOCAL_MODULE_TAGS :=user eng tests optional
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译