Android代码宏控制方案 【转】
2024-10-12 03:31:47
本文转载自:http://blog.sina.com.cn/s/blog_769500f001017ro6.html
目前107分支上,在各项目projectConfig.mk中已添加项目宏以及客户宏,例如:
QH_CUSTOM = songri
QH_PROJECT = s100
使用上述projectconfig.mk中定义的宏,实现宏控制代码控制方法如下:
1、对于java代码:
在common.mk中,根据上述宏定义添加property属性,如下。
ifdef QH_PROJECT
ifeq ($(strip $(QH_PROJECT)),s100)
PRODUCT_PROPERTY_OVERRIDES += \
ro.project.name=s100
endif
ifeq ($(strip $(QH_PROJECT)),s107)
PRODUCT_PROPERTY_OVERRIDES += \
ro.project.name=s107
endif
endif
在java代码中可以通过获取property属性来实现控制不同项目的代码,例如:
private static final boolean IS_PROJECT_S100 = SystemProperties.get("ro.project.name").equals("s100");
if (IS_PROJECT_S100)
{
// project s100 code
}
else
{
// other code
}
107分支上,上述项目和客户的property属性已经定义,java代码中如需使用可直接引用。
2、在makefile中
可以直接使用 ifeq ifneq 判断来实现逻辑控制。
如:
ifeq ($(QH_PROJECT),s100)
LOCAL_CFLAGS += -D QH_PROJECT_S100
endif
3、对于.c cpp .h中,
在projectConfig.mk中定义宏开关之外,还需在自己的android.mk中定义宏,如上述第2步。
然后直接使用android.mk中定义的宏进行控制,如:
#ifdef QH_PROJECT_S100
// code s100
#else
// other code
#endif
最新文章
- 浅谈Android中的startActivityForResult和setResult方法
- VTK初学一,a Mesh from vtkImageData
- Linux磁盘及文件系统管理
- 手把手教你Linux服务器集群部署.net网站 - Linux系统安装和设置
- IOS 作业项目(4)步步完成 画图 程序(上)
- STM32的Cortex-M3核与ARM7有何区别?哪个性能更强?
- Python之Python Imaging Library
- php修改排序,上移下移
- Hadoop(十二)MapReduce概述
- LeetCode---Container With Most Water(11)
- 英语口语练习系列-C05-水电
- ububtu下安装配置搜狗输入法
- 【转】每天一个linux命令(5):rm 命令
- VC 判断网络连接函数
- Codeforces Round #334 (Div. 1) B. Moodular Arithmetic
- snmp获取设备相关管理信息
- Django和Ajax
- html开发基础
- Perl 获取时间函数
- 9-queue