Android下的资源目录

Android项目后会产生assets与res的两个文件夹。

相同:理论上他们都是存放资源的文件夹。

区别: 1.assets:不会在R.java文件下生成相应的标记,存放到这里的资源在运行打包的时候都会打入程序安装包中。无法通过R资源清单访问的原生资源

​ 2.res:会在R.java文件下生成标记,这里的资源会在运行打包操作的时候判断哪些被使用到了,没有被使用到的文件资源是不会打包到安装包中的。可通过R资源清单类访问的资源

assets

assets 目录是专门用于保存各种外部文件的。常见的有:图像、音视频、配置文件、字体、自带数据库等。之所以说它适合用来管理这些文件,是因为应用程序在编译时不会去处理这个目录下的文件,但是却会将它们打包进 APK 中。而其它你随便创建的目录在编译时就会被直接忽略掉。同时,你可以在 assets 目录内任意创建目录层级关系,这对于有大量外部文件需要集成的应用来说,就能很方便地分类管理了。

在 APK 开发中,有一种管理配置信息的做法比较常见:直接将配置信息文件放入 assets 目录中管理,程序首次运行时将这里面的配置信息拷贝到外部的可操作的目录下,后续程序的运行均靠这份保存在外部的配置信息为准,assets 中的信息仅作为原始配置信息的备份。

但是,assets 目录在使用上也还是有一点小缺憾的。

assets 目录内的文件在程序打包发布以后就是只读的。就是你只能读取那里面的文件,而无法修改或增加文件。这条特性其实也可以理解,因为应用程序一旦打包发布了,它就应该是只读的。而 assets 目录又是直接保存在 APK 内部的,所以它自然也不能修改或增加内容了。实在要想增加内容,通过 Database 或者 SharedPreferences 往 /data/data 目录下保存就好了嘛。再或者这两者不能满足你的要求,你也可以直接将它们保存在 sdcard 下面嘛。反正现在市面上的 APK 在 sdcard 里创建自己的数据文件夹的可不少。

res

在res文件夹下其实还可以定义子目录:

资源文件

/res/drawable:存放各种位图文件或者对应的可使用的 XML 文件。

存放布局文件

/res/layout:存放各种用户界面的布局文件

存放动画资源

/res/anim:存放定义补间动画的xml文件

放基于XML的菜单描述

res/menu:存放为应用程序定义各种菜单的资源,包括选项菜单,子菜单,上下文菜单的资源

存放通用的文件, 该文件夹内的文件将不会被编译成二进制文件,按原样复制到设备上。

res/raw: 该文件夹内的文件将不会被编译成二进制文件,按原样复制到设备上。使用方法是getResource().OpenRawResources(ID),其中参数ID的形式是R.raw.XXX.。

存放字符串、尺寸值

res/values:存放各种简单值的xml文件。这些简单值包括字符串值,整数值,颜色值,数组等

存放通用的XML文件

res/xml:可以在Activity中使用getResource().getXML()读取这里的资源文件


Android下的资源目录
http://example.com/2023/04/15/Android下的资源目录/
作者
路茜
发布于
2023年4月15日
许可协议