转载请注明出处: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. 虚拟机创建后该如何获取IP地址并访问互联网实用教程

    之前在做项目的时候主机IP地址.网关.DNS.子网掩码等都是公司或者对方直接给提供的,但是如果我们自己想搭建一台虚拟机或者一台集群的话,手头又没有IP地址,该肿么办呢?   白慌,这里介绍一个小技巧, ...

  2. 路飞学城Python-Day7(practise)

    # 1.编码问题# i.请说明python2与python3中的默认编码是什么?# python2中的默认编码是ASCII码,只能识别英文等其他字符# python3中的默认编码是utf-8# ii. ...

  3. electron 新手教程 打包 exe

    1.安装nodejs(会自动安装npm) 2.桌面新建文件夹    your-app  (下面目录结构) your-app/ ├── package.json ├── main.js └── inde ...

  4. HTTP Analyzer(实时分析HTTP/HTTPS数据流)

    简述 HTTP Analyzer是一款实时分析HTTP/HTTPS数据流的工具.它可以实时捕捉HTTP/HTTPS协议数据,可以显示许多信息(包括:文件头.内容.Cookie.查询字符窜.提交的数据. ...

  5. BNUOJ34980方(芳)格(哥)取数(好坑)

    方(芳)格(哥)取数 Time Limit: 3000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class n ...

  6. Linux平台不同解压缩命令的使用方法

    作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.co ...

  7. 整合大量开源库项目(五)跳动的TextView JumpingBeans,良好体验的滚动条ConvenientBanner

    转载请注明出处:王亟亟的大牛之路 时间过得非常快,这一系列已经写了第五篇了(感觉还要写好久).今天又引入了2个非常好用的库JumpingBeans,ConvenientBanner.首先.先看一下效果 ...

  8. MySQl Study学习之--MySQl二进制日志管理

    MySQl Study学习之--MySQl二进制日志管理 MySQL二进制日志(Binary Log)   a.它包括的内容及作用例如以下:     包括了全部更新了数据或者已经潜在更新了数据(比方没 ...

  9. Unity3D的场景单位 和 3D建模软件的单位 之间的关系

    转载自 : http://www.ceeger.com/Unity/Doc/2011/3D_to_Unity.html Date:2011-08-24 03:52 Unity的系统单位为米,其他3D软 ...

  10. 实习第四天(bboss框架学习)

    现在好像比较使用的管理工具是gradle管理工具,学长说这个管理工具比maven管理工具要好用! 我今天主要就是想要安装好的gradle这个管理工具,但是可能是我的eclispe版本的问题,我没能安装 ...