本文转载自: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. 好用的Cache辅助工具类

    话不多说,直接上代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  2. 遍历WPF DataGrid单元格

    using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Media; ...

  3. SQLServer2008 将本地excel导入到远程服务器表

    --1.创建链接服务器,相当于创建一个访问远程数据库的快捷方式 exec sp_addlinkedserver 'TestLink', ' ', 'SQLOLEDB ', '111.11.1.111' ...

  4. 改善用户体验 Web前端优化策略总结

    前端是庞大的,包括HTML.CSS.Javascript.Image.Flash等等各种各样的资源.前端优化是复杂的,针对方方面面的资源都有不同的方式.那么,前端优化的目的是什么? 1. 从用户角度而 ...

  5. 移动端弹性滑动以及vue记录滑动位置

    -webkit-overflow-scrolling介绍 -webkit-overflow-scrolling: auto | touch; auto: 普通滚动,当手指从触摸屏上移开,滚动立即停止 ...

  6. Error:CreateProcess error=216的错误,JDK版本不匹配问题。

    今天刚下载安装完android studio,结果随便新建一个工程的时候就出现了如下提示: Error:CreateProcess error=216, 该版本的 %1 与您运行的 Windows 版 ...

  7. js-事件处理(重点)

    1:各种常用事件: 2:简单用法: <body onLoad="javascript:alert('hello world');" onUnload="javasc ...

  8. 物理cpu与逻辑cpu概述

    物理cpu与逻辑cpu概述(本博客属于转载部分内容:主要学习目的用于大数据平台Hadoop之yarn资源调度的配置) 一.yarn资源调度器中主要的资源分类       1.memory(内存) 2. ...

  9. log日志模块得作用

    import logginglogger=logging.getLogger()logger.setLevel(logging.DEBUG)#控制台输出日志'''consle=logging.Stre ...

  10. [kernel学习]----如何debug kernel

    #ll /sys/kernel/debug/tracing/events/kmem total 0 -rw-r--r-- 1 root root 0 Feb 3 20:17 enable -rw-r- ...