轻读一下 Android 应用开发中的 assets 目录

 


 

在Android的应用开发中,难免会遇到外部文件的预置需求。例如图像、音视频、配置文件、字体等等。对于图像,我们很容易会想到将它们存放在 res/drawable 目录或者是 res/mipmap 目录下。但对于其它类型的文件,就得另寻它法了。

 

比较常见的可以保存任意类型文件的地方主要有两个:

1、res/raw 目录;

2、assets 目录。

 

drawable/mipmap、raw、assets 三者都可以用来存储一些外部资源文件,那它们之间各自有什么优缺点呢?

 

首先,在 drawable 或 mipmap 下只能保存图像文件或图像描述文件,但在这两个目录下保存的图像文件在编译时会建立一张“索引表”。这个索引信息会被统一保存在一个名称为 R.java 的文件中。在程序的任何地方都可以直接通过 R.drawable.xxx 的形式来使用图片资源。

 

res/raw 目录算是一个比较特殊的资源文件目录。它被设计用于保存一些二进制文件,即在这个目录下的所有文件都会被记录到“索引表”中,但是编译系统不会去动里面的文件。raw 目录下的文件放进去时是什么样的,编译成 APK 以后还是什么样。这个目录比较适合保存一些音视频等二进制文件。

 

res 目录下的资源文件夹,不管是 raw 还是 drawable 或 mipmap,都不能自由地设计子目录层级关系。不管你有多少文件,都只能放在同一级目录中。

 

assets 目录是一个非常自由的目录。它就像是Android应用中的“三不管”地带,不会为里面的文件建立索引、不会限制目录层级关系、不会处理里面的文件。如果你想更好地管理自己的外部资源文件,建议使用 assets 目录。

 

本篇文章,我们重点来讲解一下 Android 的 assets 目录。

 

1、assets 简介

 

assets 在 APK 工程中就是一个普通的目录而已。不管是 Eclipse 创建的工程还是 Android Studio 创建的工程,在它的工程根目录下都可以发现(或者自己创建)一个 assets 目录,如下图所示

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

 

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

 

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

 

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值