Android 添加宏编译进SystemProperties文件 实现运行时控制

     在Android java 层 通过在buildspec.mk中添加宏实现运行时控制 ,这样的好处是以后只需要关闭或是打开宏即可控制程序代码的个性化选择

问题: 我要进行CTA测试,之前在某一个叫 AAA.java 文件中有这样一段代码

                 static final int MIN_MATCH = 7;

现在,我想在程序里做一个判断 如果系统没有要求则保持不变,如果要CTA测试  我要改成:

                static final int MIN_MATCH = 11;

      如果在程序里添加判断那是不可取的,要知道Android是一个大工程,不是我们一个人在做改动 ,可能会遇在某一天这种需求要改回来而别人又不懂代码,就算懂得也要去花时间阅读,最后还要手动删除的问题。。。。。所以 为了能我们做出的修改提升到工程的高度 和 使程序实现更好的隐藏。 Android有 buildspec.mk 文件并提供了 Build.java 和 SystemProperties.java 这两个类   我们可以利用他们解决上边的问题

                                                                                 方法一

       1.   在buildspec.mk中添加宏

# CTA test control
# true
# false
export CTA_VERSION_ALL := true
ADDITIONAL_BUILD_PROPERTIES +=
pw.ctaversionall.support=$(CTA_VERSION_ALL)

前三行是注释 第四行 是声明一个宏变量 第五行 是 把 键pw.ctaversionall.support 和值$(CTA_VERSION_ALL) 这个键值对指定添加到build.prop中  其中pw.ctaversionall.support 可以是自己定 宏CTA_VERSION_ALL 同样

   2.     在AAA.java 中添加

  import android.os.SystemProperties;

      static final int MIN_MATCH;

    static {
        if(
SystemProperties.getBoolean("pw.ctaversionall.support", false)) {
            MIN_MATCH = 11;
        } else {
            MIN_MATCH = 7;
        }
    }

           其中,第二个参数false是个默认值就是如果该函数取不到键pw.ctaversionall.support所对应的值时函数返回false   SystemProperties 中有很多静态方法 访问通过键来获取值

这样每次只需要修改 1 中 第四行 关闭宏 就改为false 打开宏就改为 true

                                                                                                       方法二

保留方法一中步骤一

2  在 Build.java 类中添加

public static final String AAA = getString(pw.ctaversionall.support");   // AAA 这个名字自己定

   3.     在AAA.java 中添加

  import android.os.Build;

      static final int MIN_MATCH;

    static {
        if(
Build.AAA.equals("true")) {
            MIN_MATCH = 11;
        } else {
            MIN_MATCH = 7;
        }
    }

即可


你可能感兴趣的:(Android)