使用不同的项目宏决定载入不同资源
2014-08-28 10:59
113 查看
背景:
经常在项目中,需要根据不同的客户,导入不同的配置或者资源。一般我们在项目的如下地方定义宏:alps/build/target/product/common.mk |
alps/mediatek/build/tools/javaoption.pm |
alps/mediatek/config/common/ProjectConfig.mk |
alps/mediatek/config/projectName/ProjectConfig.mk |
在文件build/target/product/common.mk中定义:
FESTIVAL_WALLPAPER_CONFIG = projecta
这个值就是我们定义的项目信息值了。
如何使用:
比如我们将a客户数据定义为projecta.xml,b客户数据定义为projectb.xml。将其放在某个应用根目录(与src、res同目录)的customFestivals目录下面,那么在编译的时候只要将customFestivals里面的对应客户xml拷贝到values/config.xml里面即可。这个对应额客户就是FESTIVAL_WALLPAPER_CONFIG定义的值了。所以需要在Android.mk中使用如下语句:LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#copy config.xml to res.dir
$(shell cp $(LOCAL_PATH)/customfestivals/$(FESTIVAL_WALLPAPER_CONFIG).xml $(LOCAL_PATH)/res/values/config.xml)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under,src)
#LOCAL_REQUIRES_MODULE := android.software.live_wallpaper.xml
LOCAL_PACKAGE_NAME := FestivalWallpaper
LOCAL_CERTIFICATE := platform
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
include $(BUILD_PACKAGE)
# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))重点是如下一句:
$(shell cp $(LOCAL_PATH)/customfestivals/$(FESTIVAL_WALLPAPER_CONFIG).xml $(LOCAL_PATH)/res/values/config.xml)这个将FESTIVAL_WALLPAPER_CONFIG名称的xml文件拷贝到res/values中,并且重命名为config.xml。
这个操作是在编译时执行的,所以项目开发人员可以通过修改common.mk中的该数据来决定载入哪个客户的数据。
扩展:
这个实际跟将宏实际也可以在build/target/product中每个项目对应的project.mk中定义。碰到的难点:
由于对MakeFile语法不了解,所以不知道如何将FESTIVAL_WALLPAPER_CONFIG转化为对应的xml文件。其实很简单,用$引用该变量的内容后面直接加上.xml即可。相关文章推荐
- cocos2d-x项目在不同平台设置所使用的资源目录(多个Resources文件夹)
- 使用 根据语言环境不同 而显示不同的 资源本地化 ASP.NET 网页
- 使用 根据语言环境不同 而显示不同的 资源本地化 ASP.NET 网页
- 基于netty的项目中使用protobuf,巧妙定义proto完成不同消息的编码和解码处理
- 使用Texture管理cocosBuilder项目资源:纹理文件使用(TexturePacker)
- 使用maven为不同环境打包资源文件
- WPF开发学习:资源在内外部定义的不同方式和怎么引用,Style样式的四种使用(对比CSS)
- 不同版本的控件在同一个项目中能否一起使用
- 使用Visual Studio .NET 2010的配置和条件编译在一个项目实现不同版本
- android视频项目使用资源
- MSBuild使用不同的目标框架编译项目
- 使用不同编程语言的混合项目基于VS2003
- 使用Loader载入和组织资源分布
- 在visual studio中使用编译器指令让一个项目为不同产品生成不同版本(或为不同平台生成不同版本)
- VC项目中使用图片资源
- 使用 根据语言环境不同 而显示不同的 资源本地化 ASP.NET 网页
- 不同的项目使用同一个配置文件
- OpenCms使用allKeyValuePairFiltered获取文件夹内同类型不同分类的资源
- 使用git下载项目资源
- 监控项目使用资源