Android 文件结构
这篇文章想用比较直观的方式,介绍一个完整 Android 项目里常见的文件和目录结构,顺便说说它们“各司其职”的地方。
常用目录一览
在日常开发中,主要会跟这些目录打交道:
-
src
项目的 Java 源代码都在这里。
Activity、业务逻辑、自定义组件……大部分要写的“代码活儿”基本都出自这个目录。 -
res
项目的各种资源文件集中营,包括图片、字符串、布局、颜色、样式等。
跟“怎么显示”“显示成什么样”有关的内容,大多在这里。几个常见的子目录:
-
res/layout
保存页面布局的 XML 文件。每一个 Activity、Fragment、控件组合,通常都会对应一个布局文件。 -
res/values
存放项目里经常复用的“常量型资源”:字符串、颜色、样式、主题等。
为了支持多语言,IDE 也可以创建不同语言环境的values-xx文件夹,用来放对应语言的字符串资源。 -
res/drawable
应用中用到的大部分图片、形状、选择器等资源都会放在这里。 -
一系列按像素密度区分的目录
例如:res/drawable-hdpi、res/drawable-xhdpi等。
不同文件夹里放的是同一套图标的不同分辨率版本,用来适配不同屏幕密度,让显示效果尽量清晰、统一。
-
经常会打开的几个文件
除了目录本身,有几个文件在开发中非常容易遇到的:
-
res/layout/activity_main.xml
负责描述主界面的布局结构——有哪些控件、如何摆放、对齐方式如何等。
简单来说,它决定了“页面长什么样”。 src/.../MainActivity.java(或类似命名的 Activity 文件)
这里写的是页面背后的逻辑:- 给按钮绑定点击事件
- 请求和处理数据
- 在不同页面之间传递参数
换句话说,它决定了“页面怎么动起来”。
-
AndroidManifest.xml
这个文件包含了关于当前应用的关键信息,可以把它当成整个应用的“身份证明”:- 应用的包名、图标等基本信息
- 支持的最低 Android 系统版本
- 应用需要声明的权限(如访问网络、读写存储等)
- 每个 Activity / Service / BroadcastReceiver 等组件的注册信息
没有正确配置 Manifest,应用就很难正常跑起来。
一些不那么“天天见”的目录
这些目录未必经常改动,但也值得关注一下:
-
gen
由构建工具自动生成的 Java 文件所在目录,其中最重要的是R.java。
代码里引用R.layout.xxx、R.id.xxx,都是通过它来建立“资源索引”的。
一般不需要手动修改这里的内容。 -
assets
放一些跟项目相关、但不会被编译成资源 ID 的原始文件,如字体、配置文件等。
代码里通常通过AssetManager来读取这些内容。 -
bin
构建出来的中间文件和安装包会出现在这里。你在 IDE 中点击“运行/打包”之后生成的 APK,通常可以在这个目录里找到。 -
libs
用来存放第三方库(例如*.jar文件)。
如果你引入了某些外部依赖,又不是通过构建工具统一管理,有可能就被放在这里。
整体上,一个 Android 项目的目录结构并不算复杂,多看几次、通过建几个小 Demo,很应该就能熟悉:其实看到文件名,就大概知道它是布局/资源,还是代码逻辑,或者是基础配置(Manifest、依赖等)。熟悉这些之后,在项目里定位问题和定位代码都会更顺手。