转载请注明出处:http://blog.csdn.net/droyon/article/details/39890469

在进行Android应用程序开发时,善于运用xml中的product配置,能够达到优化代码的目的。

比如:我们须要一个依据设备是否含有模拟sd卡存储区,显示不同的描写叙述的需求,一般来说,我们须要这样来实现:

<string name="filter_apps_onsdcard">"含有模拟SD卡"</string>
<string name="filter_apps_nosdcard">"无模拟SD卡"</string>
String desc = "";
if (Environment.isExternalStorageEmulated()) {
desc = getString(R.string.filter_apps_onsdcard);
}else{
desc = getString(R.string.filter_apps_nosdcard);
}

假设我们善用xml资源的写法,我们的代码能够这样写:

<string name="filter_apps_sdcard" product="default">"含有模拟SD卡"</string>
<string name="filter_apps_sdcard" product="nosdcard">"无模拟SD卡"</string>
String desc = "";
desc = getString(R.string.filter_apps_sdcard);

在代码中省去了推断逻辑,我们的代码执行效率更高。那么问题来了,“挖掘机技术那家强”,

额,赤裸裸的被洗脑了。言归正传,看到上述的资源配置,我非常想知道,product能够进行填写那些值或者取值来源。

事实上product相应的值来源于“PRODUCT_CHARACTERISTICS”所相应的赋值。

在我们编译android系统时,依据不同的项目,会运行makefile文件,当中每一个项目都能够对每一个项目进行PRODUCT_CHARACTERISTICS赋值。比如:

./device/lge/hammerhead/device.mk

PRODUCT_CHARACTERISTICS := nosdcard

假设我们编译的androidproject烧录到设备中,这个值会写入/system/build.prop中。

ro.build.characteristics=nosdcard

仅仅只是,在build.prop中,这个属性为仅仅读属性,不可更改。

xml里面product的值在哪里设置的?的更多相关文章

  1. gridcontrol如何根据值来动态设置某一行的颜色

    应用场景:当我们使用devexpress gridcontrol wpf控件时.可要会要根据这一行要显示的值来设置相应的颜色 可以通过下面方法来实现 一.先定义一个style <local:Co ...

  2. redis 键值对 有效期设置

    redis 键值对 有效期设置redis中可以使用expire命令设置一个键的生存时间, 到时间后redis会自动删除它<-----> 类比于javaweb系统临时数据 过期删除功能 ex ...

  3. VB 老旧版本维护系列---读取xml某个节点的值

    读取xml某个节点的值 '定义xml字符串内容地址 Dim xmlFileStr As String = "" '定义所需读取节点的名称 Dim readNodeName As S ...

  4. XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间.   为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...

  5. pyqt5_实例:修改xml文件中节点值

    需求: 将类似如下xml文件的externalid节点值修改成不重复的值 实现该功能的代码Func.py: #coding=utf-8 ''' Created on 2019年10月15日 @auth ...

  6. C#读取XML文件并取值

    1.新建XML文件: <?xml version="1.0" encoding="utf-8" ?> <SystemInfo> < ...

  7. Android布局文件layout.xml的一些属性值

        第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 andr ...

  8. C#中的PropertyGrid绑定对象,通过改变某一值而动态设置部分属性的特性

    问题:如下,我定义了一个对象,默认设置属性WindowSize ,WindowSize 为不可见,通过改变SaveOnClose的值,动态的改变不可见的属性的显示和隐藏. [DefaultProper ...

  9. postman提取接口的返回值及动态设置变量(一)

    一.提取接口返回值   1.当返回值是返回JSON时 let json = JSON.parse(responseBody); // responseBody是包含整个返回内容的字符串 let foo ...

随机推荐

  1. BZOJ 1085 / LOJ 2151 [SCOI2005]骑士精神 (剪枝/A*迭代搜索)

    题目大意:略 直接爆搜会T,我们优化一下,统计出当前棋盘和目标棋盘不同的位置的数量k,那么当前棋盘变成目标棋盘最少的移动次数是k-1 每次选择一个最大深度ma,那么如果当前走了dep步,显然必须保证d ...

  2. centos7 jumpserver 部署和使用手册(二)

    前面已经介绍了jumpserver的部署,基于这篇部署文档,下面介绍下部署完成后的的功能使用: 一.系统设置 1.1根据提供的帐号密码(admin/admin)登录jumpserver 修改 url ...

  3. 紫书 习题 11-2 UVa 1001 (Floyd)

    这道题只是在边上做一些文章. 这道题起点终点可以看成半径为0的洞, 我是直接加入了洞的数组. 边就是两点间的距离减去半径, 如果结果小于0的话, 距离就为0, 距离不能为负 然后我看到n只有100, ...

  4. sqoop从mysql导入到hdfs出现乱码问题

    最近把hive元数据库的快照数据导入到hdfs中,以便对历史的元数据进行查询. 命令如下: sqoop import -D mapred.job.queue.name=do.production -- ...

  5. hadoop-12-安装ambari-agent

    hadoop-12-安装ambari-agent 在所有的机器上面安装ambari-agent 1, cd /etc/yum.repos.d/vi 三个文件vi ambari.repo#VERSION ...

  6. Linux下安装Mysql(RPM安装)

    一.去官网下载本次安装须要的mysql版本号.我们须要安装的是5.1版本号的且centos系统是64位的.所下面载的是MySQL-community-5.1.73-1.rhel5.x86_64.rpm ...

  7. USACO Section 1.3 : Calf Flac (calfflac)

    题意:据说假设你给无限仅仅母牛和无限台巨型便携式电脑(有很大的键盘),那么母牛们会制造出世上最优秀的回文. 你的工作就是去寻找这些牛制造的奇观(最优秀的回文). 在寻找回文时不用理睬那些标点符号.空格 ...

  8. 35.angularJS的ng-repeat指令

    转自:https://www.cnblogs.com/best/tag/Angular/ 1. <html> <head> <meta charset="utf ...

  9. BZOJ 3503 高斯消元

    思路: 高斯消元就好啦 注意每个格子最多只能和4个相邻 所以是 n*m*n*m*5 的 并不会TLE //By SiriusRen #include <cstdio> #include & ...

  10. AngularJs轻松入门(三)MVC架构

    MVC应用程序架构最早于1970年起源于Smalltalk语言,后来在桌面应用程序开发中使用较为广泛,如今在WEB开发中也非常流行.MVC的核心思想是將数据的管理(Model).业务逻辑控制(Cont ...