【Android学习】Android工程资源命名禁忌
在制作一个继续按钮时,将button的id设置为continue,发现报了错误,error: invalid symbol: 'continue'
一开始还以为是编码问题,后来百度之后才知道安卓Android项目中资源文件或者id都不能使用Java保留符号
原因是它们会被翻译成Java代码(R.java),使Dalvik VM可以解释。
所以顺便总结一下安卓工程中的命名禁忌,以免以后还犯这种错误
Android工程中,res\drawable\ 文件夹下所有的图片资源文件命名,不允许:
1. 大写字母
从Eclipse的这个报错可以知道资源文件的命名规则。
Invalid file name: must contain only [a-z0-9_.]
参考Android Issue 31。
2. "default.png"
不能生成 R.java,报错:
res\drawable\default.png:0: error: invalid symbol: 'default'
出现这个错是因为类似default和continue等是Java的保留符号,而Android项目中资源文件(譬如drawable中的图片和strings.xml等)不能使用Java保留符号的原因是它们会被翻译成Java代码(R.java),使Dalvik VM可以解释。
例如strings.xml中的
<string name="continue">Continue</string>
可被翻译成
public final class R {
public static final class string {
public static final int continue=0x7f040000;
}
}
Java的Keyword清单:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
3. 以下划线("_")开头
不能生成 R.java,报错Type是 "Android AAPT Problem"。
(skipping (null) file ...)
2009年提交的Android Issue 5343指出“Files in the assets folder starting with an underscore are omitted by the build script”,“Folders starting with an underscore are omitted without warning.”。更多信息都在5343这个issue detail里。
看上去,res/drawable里以下划线开头的文件也被aapt报错了。类似的还有人提到res/raw里的python脚本文件__init__.py。
4. 以数字加下划线("[0-9]_")开头
常见于图片资源。可以生成 R.java,但是 R.java 文件内报错:
Underscores can only be used with source level 1.7 or greater
这里涉及到两种情况。
Java标识符不能以数字开头,第一个字符应该是字母。
下划线。Java 7中引入了一个新特性“Underscores in Numeric Literals”。譬如1_000就是1000。
以数字开头的报错如下:
Syntax error on token "0xxx", delete this token
【Android学习】Android工程资源命名禁忌的更多相关文章
- android学习笔记32——资源
Android应用资源 资源分类: 1.无法直接访问的原生资源,保存于asset目录下 2.可通过R资源清单类访问的资源,保存于res目录下 资源的类型以及存储方式 android要求在res目录下用 ...
- Android学习笔记菜单资源文件
创建菜单资源 menu_one.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns: ...
- android学习——android架构
android架构:在了解全局的情况下进行细致化的分析才能更有效的学习android的运行原理,才能更深刻的理解android开发: 1.架构图直观 2.架构详解 2.1.Linux Kernel 2 ...
- android学习——Android Layout标签之-viewStub,requestFocus,merge,include
定义Android Layout(XML)时,有四个比较特别的标签是非常重要的,其中有三个是与资源复用有关,分别是<viewStub/>, <requestFocus />, ...
- Android工程图片资源命名禁忌
Android工程中,res\drawable\ 文件夹下所有的图片资源文件命名,不允许: 1. 大写字母 从Eclipse的这个报错可以知道资源文件的命名规则. Invalid file name: ...
- android学习笔记33——资源ShapeDrawable
ShapeDrawable ShapeDrawable用于定义一个基本的几何图像(如,矩形.圆形.线条.......). 定义ShapeDrawable的XML文件的根元素是<shape.../ ...
- Android学习笔记样式资源文件
样式资源和主题资源都是写在styles.xml文件里面的 <style name="title"> <item name="android:textSi ...
- Android学习笔记数组资源文件
在android中我们可以通过数组资源文件,定义数组元素. 数组资源文件是位于values目录下的 array.xml <?xml version="1.0" encodin ...
- Android学习笔记尺寸资源
尺寸资源语法 dp:设备独立资源像素 会根据设备匹配大小 一般用于设置边距和组件大小 sp : 可伸缩像素 根据用户手机字体大小首选项进行缩放 使用尺寸资源 定义尺寸资源 dimens <?xm ...
随机推荐
- DLatch by Verilog
//-----------------------------------------------------// Design Name : dlatch_reset// File Name : ...
- class_create(),class_device_create()创建/dev/xxx 名字
在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载 ...
- linux命令echo和cat比较
当前主要比较echo 和 cat的重定向功能 1.echo 1 > /proc/xxx 解析: echo 进行重定向的时候,仅仅是将字符"1" 输出到 /proc/xxx文件 ...
- niosII SDRAM ,FLASH (学习特权)
环境: quartus v13.0 64位. DE2 cycloneII EP2C35F672C6N (学校的开发板,还是想同学借的呵呵) 主要实现flash的烧录,虽然实现了但是还是有很多运气的成 ...
- 命令提示符(cmd)中的tracert命令详解(小技巧)
tracert也被称为Windows路由跟踪实用程序,在命令提示符(cmd)中使用tracert命令可以用于确定IP数据包访问目标时所选择的路径.本文主要探讨了tracert命令的各个功能. 百度经验 ...
- js中的Array
js中的Array 啥是ArrayLike对象 类似,下面这种对象的就是ArrayLike var arraylike = { 0: "a", 1: "b", ...
- Windows下搭建PHP开发环境-WEB服务器
PHP集成开发环境有很多,如XAMPP.AppServ......只要一键安装就把PHP环境给搭建好了.但这种安装方式不够灵活,软件的自由组合不方便,同时也不利于学习.所以我还是喜欢手工搭建PHP开发 ...
- Python之二维数组N*N顺时针旋转90度
需求:把一个二维数组顺时针旋转90度,现实数据的替换. 比如把4*4的二维数组顺时针旋转90度 原始数据是一个嵌套列表:[['A', 'B', 'C', 'D'], ['A', 'B', 'C', ' ...
- CNN感受野计算
无痛理解CNN中的感受野receptive field CNN中感受野的计算 从直观上讲,感受野就是视觉感受区域的大小.在卷积神经网络中,感受野的定义是决定某一层输出结果中一个元素所对应的输入层的区域 ...
- SqlServer——for xml path
for xml path 就是将 sql 查询出来的内容以XML的格式显示出来.参考网站MSDN:将 PATH 模式与 FOR XML 一起使用. 先创建测试用的表格: create table SZ ...