这篇文章想用比较直观的方式,介绍一个完整 Android 项目里常见的文件和目录结构,顺便说说它们“各司其职”的地方。


常用目录一览

在日常开发中,主要会跟这些目录打交道:

  • src
    项目的 Java 源代码都在这里。
    Activity、业务逻辑、自定义组件……大部分要写的“代码活儿”基本都出自这个目录。

  • res
    项目的各种资源文件集中营,包括图片、字符串、布局、颜色、样式等。
    跟“怎么显示”“显示成什么样”有关的内容,大多在这里。

    几个常见的子目录:

    • res/layout
      保存页面布局的 XML 文件。每一个 Activity、Fragment、控件组合,通常都会对应一个布局文件。

    • res/values
      存放项目里经常复用的“常量型资源”:字符串、颜色、样式、主题等。
      为了支持多语言,IDE 也可以创建不同语言环境的 values-xx 文件夹,用来放对应语言的字符串资源。

    • res/drawable
      应用中用到的大部分图片、形状、选择器等资源都会放在这里。

    • 一系列按像素密度区分的目录
      例如:res/drawable-hdpires/drawable-xhdpi 等。
      不同文件夹里放的是同一套图标的不同分辨率版本,用来适配不同屏幕密度,让显示效果尽量清晰、统一。


经常会打开的几个文件

除了目录本身,有几个文件在开发中非常容易遇到的:

  • res/layout/activity_main.xml
    负责描述主界面的布局结构——有哪些控件、如何摆放、对齐方式如何等。
    简单来说,它决定了“页面长什么样”。

  • src/.../MainActivity.java(或类似命名的 Activity 文件)
    这里写的是页面背后的逻辑:
    • 给按钮绑定点击事件
    • 请求和处理数据
    • 在不同页面之间传递参数
      换句话说,它决定了“页面怎么动起来”。
  • AndroidManifest.xml
    这个文件包含了关于当前应用的关键信息,可以把它当成整个应用的“身份证明”:

    • 应用的包名、图标等基本信息
    • 支持的最低 Android 系统版本
    • 应用需要声明的权限(如访问网络、读写存储等)
    • 每个 Activity / Service / BroadcastReceiver 等组件的注册信息

    没有正确配置 Manifest,应用就很难正常跑起来。


一些不那么“天天见”的目录

这些目录未必经常改动,但也值得关注一下:

  • gen
    由构建工具自动生成的 Java 文件所在目录,其中最重要的是 R.java
    代码里引用 R.layout.xxxR.id.xxx,都是通过它来建立“资源索引”的。
    一般不需要手动修改这里的内容。

  • assets
    放一些跟项目相关、但不会被编译成资源 ID 的原始文件,如字体、配置文件等。
    代码里通常通过 AssetManager 来读取这些内容。

  • bin
    构建出来的中间文件和安装包会出现在这里。你在 IDE 中点击“运行/打包”之后生成的 APK,通常可以在这个目录里找到。

  • libs
    用来存放第三方库(例如 *.jar 文件)。
    如果你引入了某些外部依赖,又不是通过构建工具统一管理,有可能就被放在这里。


整体上,一个 Android 项目的目录结构并不算复杂,多看几次、通过建几个小 Demo,很应该就能熟悉:其实看到文件名,就大概知道它是布局/资源,还是代码逻辑,或者是基础配置(Manifest、依赖等)。熟悉这些之后,在项目里定位问题和定位代码都会更顺手。