Android Directory Structure


Within an Android project structure, the most frequently edited folders are:

  • src - Java source files associated with your project. This includes the Activity "controller" files as well as your models and helpers.
  • res - Resource files associated with your project. All graphics, strings, layouts, and other resource files are stored in the resource file hierarchy under the res directory.
  • res/layout - XML layout files that describe the views and layouts for each activity and for partial views such as list items.
  • res/values - XML files which store various attribute values. These include strings.xml, dimens.xml, styles.xml, colors.xml, themes.xml, and so on.
  • res/drawable - Here we store the various density-independent graphic assets used in our application.
  • res/drawable-hdpi - Series of folders for density specific images to use for various resolutions.
  • res/mipmap - most commonly used for application icons. See this section for more details.

The most frequently edited files are:

  • res/layout/activity_foo.xml - This file describes the layout of the activity's UI. This means the placement of every view object on one app screen.
  • src/.../ - The Activity "controller" that constructs the activity using the view, and handles all event handling and view logic for one app screen.
  • AndroidManifest.xml - This is the Android application definition file. It contains information about the Android application such as minimum Android version, permission to access Android device capabilities such as internet access permission, ability to use phone permission, etc.

Other less edited folders include:

  • gen - Generated Java code files, this library is for Android internal use only.
  • assets - Uncompiled source files associated with your project; Rarely used.
  • bin - Resulting application package files associated with your project once it’s been built.
  • libs - Before the introduction of Gradle build system, this directory was used for any secondary libraries (jars) you might want to link to your app.


Fork me on GitHub