本文转载自: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代码宏控制方案 【转】的更多相关文章

  1. Android 代码混淆 混淆方案

    本篇文章:自己在混淆的时候整理出比较全面的混淆方法,比较实用,自己走过的坑,淌出来的路.请大家不要再走回头路,可能只要我们代码加混淆,一点不对就会导致项目运行崩溃等后果,有许多人发现没有打包运行好好地 ...

  2. Android 双u盘方案【转】

    本文转载自:https://blog.csdn.net/kc58236582/article/details/49618445 1      L1813系统上双U盘设计方案——系统设计 1.1     ...

  3. 转: Android微信智能心跳方案

    http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207243549&idx=1&sn=4ebe4beb8123f1b5 ...

  4. 浅谈android代码保护技术_ 加固

    浅谈android代码保护技术_加固 导语 我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk,结果被人反编译了,那心情真心不舒服.虽然我们混淆,做到native层,但 ...

  5. 值得细读!如何系统有效地提升Android代码的安全性?

    众所周知,代码安全是Android开发工作中的一大核心要素. 11月3日,安卓巴士全球开发者论坛线下系列沙龙第七站在成都顺利举办.作为中国领先的安卓开发者社区,安卓巴士近年来一直致力于在全国各大城市举 ...

  6. 下载最新Android代码的方法

    之前我是去Android官方网站下载最新Android代码,但是这种方法需要FQ,而且有时候FQ又不太方便,今天我发现一个不错的网站,是清华大学搞的,跟Android官方的代码基本保持同步,而且下载方 ...

  7. Android代码混淆官方实现方法

    首先查看一下 “project.properties” 这个文件: # This file is automatically generated by Android Tools.# Do not m ...

  8. Android记录11-控制ExpandableListView展开和关闭

    Android记录11-控制ExpandableListView展开和关闭 2013年12月5日 工作记录 我们在使用ExpandableListView可能会遇到各种问题,比如说只展开一个组,关闭其 ...

  9. 编写高效的Android代码

    编写高效的Android代码 毫无疑问,基于Android平台的设备一定是嵌入式设备.现代的手持设备不仅仅是一部电话那么简单,它还是一个小型的手持电脑,但是,即使是最快的最高端的手持设备也远远比不上一 ...

随机推荐

  1. Android Activity has leaked window that was originally added

    今天调试程序时log中突然打印这样的错误,但是程序并没有crash,为了不放过一个错误,我决定调查一下. 当时是离开一个activity,然后提示是否退出此界面,接下来就打印此错误: - ::): A ...

  2. JSON与List之间的转换

    jsonString转换为list: JSONArray jsonArray=JSONArray.fromObject(result); List<RentCar> books=(List ...

  3. 常用的 CSS 技巧

    1. 黑白图像 这段代码会让你的彩色照片显示为黑白照片,是不是很酷? img.desaturate { filter: grayscale(%); -webkit-filter: grayscale( ...

  4. 团体程序设计天梯赛-练习集-L1-044. 稳赢

    L1-044. 稳赢 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招.但是!为了不让对方输得太惨,你需要每隔K ...

  5. Linux direct io使用例子

    Linux direct io使用 在linux 2.6内核上使用direct io不难,只需按照如下几点来做即可: 1,在open文件时加上O_DIRECT旗标,这样以通告内核我们想对该文件进行直接 ...

  6. CSS设置input默认样式

    HTML <ul class="box"> <li> <input type="checkbox" name="vehi ...

  7. SDOI2017数字表格

    求$\prod_{i=1}^n\prod_{j=1}^n\text{Fib}[\gcd(i,j)]\;\text{mod}\;10^9+7$的值 令$n\leq m$,则有: \begin{align ...

  8. Linux系统学习之 三:新手必须掌握的Linux命令3

    内容预览 1.输入输出重定向 2.管道命令符 3.命令行的通配符 4.常用的转义符号 5.重要的环境变量 一.输入输出重定向 重定向技术的5种模式:1 标准覆盖输出重定向 错误覆盖输出重定向 错误追加 ...

  9. AtCoder ABC 076D - AtCoder Express

    传送门:http://abc076.contest.atcoder.jp/tasks/abc076_d 本题是一个运动学问题——匀变速运动. 一个质点,从静止开始运动.按照速度限制,可将运动划分成n个 ...

  10. 1、dubbo的概念

    Dubbo是什么? Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo[]是 ...