xml里面product的值在哪里设置的?

转载请注明出处: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中,这个属性为仅仅读属性,不可更改。

时间: 2024-08-01 10:43:55

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

Jquery 第二课(jq:元素获取、添加、删除、过滤、判断、遍历、取值,样式设置、改变对象、切换、判断)

1.获取元素: 1).size(): 获取元素的个数. $(“img”).size():获取有多少个img. 2).eq():获取元素. $(“img[title]”).eq(1):获取第二个带有title属性的img标签. 也可以写作: $(“img[title]”)[1],此括号里的1代表索引1,所以是对应第二个,一般多用eq(). 3).get() :获得由选择器指定的DOM元素. x=$("p").get(0):获取第一个 p 元素的值. 4)index():获取某项标签的索引

2015.7.22 第十一课 课程重点(jq:元素获取、添加、删除、过滤、判断、遍历、取值,样式设置、改变对象、切换、判断)

1.获取元素: 1).size(): 获取元素的个数. $(“img”).size():获取有多少个img. 2).eq():获取元素. $(“img[title]”).eq(1):获取第二个带有title属性的img标签. 也可以写作: $(“img[title]”)[1],此括号里的1代表索引1,所以是对应第二个,一般多用eq(). 3).get() :获得由选择器指定的DOM元素. x=$("p").get(0):获取第一个 p 元素的值. 4)index():获取某项标签的索引

第十一课 课程重点(jq:元素获取、添加、删除、过滤、判断、遍历、取值,样式设置、改变对象、切换、判断)

1.获取元素: 1).size(): 获取元素的个数. $(“img”).size():获取有多少个img. 2).eq():获取元素. $(“img[title]”).eq(1):获取第二个带有title属性的img标签. 也可以写作: $(“img[title]”)[1],此括号里的1代表索引1,所以是对应第二个,一般多用eq(). 3).get() :获得由选择器指定的DOM元素. x=$("p").get(0):获取第一个 p 元素的值. 4)index():获取某项标签的索引

2015-07-22 JQuery 第二课(JQ元素获取,添加,删除,判断,遍历,取值,样式设置,改变对象,切换)

1.获取元素: 1).size(): 获取元素的个数. $(“img”).size():获取有多少个img. 2).eq():获取元素. $(“img[title]”).eq(1):获取第二个带有title属性的img标签. 也可以写作: $(“img[title]”)[1],此括号里的1代表索引1,所以是对应第二个,一般多用eq(). 3).get() :获得由选择器指定的DOM元素. x=$("p").get(0):获取第一个 p 元素的值. 4)index():获取某项标签的索引

点击单元格清除默认值并且能够设置输入字体颜色

点击单元格清除默认值并且能够设置输入字体颜色: 在很多情况下,文本框内有默认文字,一般都是提示类的文字,当点击文本框的时候能够清除写文字,下面就简单介绍一下如何实现此效果.代码如下: <!DOCTYPE HTML> <html> <head> <meta charset=" utf-8"> <title>javascript便利表格</title> <script type="text/javasc

redis 键值对 有效期设置

redis 键值对 有效期设置redis中可以使用expire命令设置一个键的生存时间, 到时间后redis会自动删除它<-----> 类比于javaweb系统临时数据 过期删除功能 expire 设置失效时间(单位/秒)persist 取消失效时间 ttl/pttl(单位为 秒/毫秒) 查看键的剩余时间 返回三种值 -2(健已经不存在了)  -1(表示永久有效)  大于0的数(还有多少有效时间) pexpire设置失效时间(单位/毫秒) expireat [key] unix时间戳13518

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

这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中的对象如果需要传递给其他系统使用:或者在关机时需要保存下来以便下次再次启动程序使用就需要序列化和反序列化. 范围:本文只介绍xml序列化,其实序列化可以是二进制的序列化,也可以是其他格式的序列化. 看一段最简单的Xml序列化代码 1 2 3 4 5 6 7 8 9 10 11 12 class Prog

学习笔记--xml里的文本字体背景的设置

还是先看一下效果图 在xml中,一些基本入门必须注意就如注释 <?xml version="1.0" encoding="utf-8"?><!--必须具备的声明,必须写在第一行第一列--> <!--中文乱码问题,文本保存时设为utf-8--> <?xml-stylesheet type="text/css" href="some.css"?> <!--这个指令就是引入写好的

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

第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中 android:layout_alignParentBottom 贴紧父元素的下边缘 android:layout_alignParentLeft 贴紧父元素的左边缘 android:layout_alignParentRight 贴