Exploring the Project Structure
An Android project is primarily a Java project, so it contains many of the standard folders you find in a Java project. Let's find out more.
In this tutorial:
- Open the Project View
- Explore Code-Related Folders
- Explore the Resource Folders
- Explore the AndroidManifest.xml File
Open the Project View
If the project view is collapsed to the left edge, click Project in the left gutter, or just press Alt+1.
When you expand the Project Tool Window, it shows the typical structure of an Android project that is analogous to the structure of most Java projects:
Explore Code-Related Folders
An Android project contains the following key folders and files:
.idea folder: contains a few subfolders and various XML files that mostly contain internal IntelliJ IDEA information and general settings. Normally, there is no need to edit the contents of this folder.
src folder: contains all source files that make up the application (activities, helper classes, and so on). You can build any hierarchy of subfolders under the src folder to better reflect the structure and the complexity of your application.
res folder: contains all project resources, such as drawable resources, layouts, and so on (for more details, see Explore the Resource Folders).
libs folder: contains all class libraries (.jar files) that you want to reference from the source files of your application. You can drag .jar files from the disk into this folder.
Explore the Resource Folders
The res folder contains all external resources used by your application, such as image assets, layout files, strings, menus, and so on. Most resources (except for images) are expressed through .xml files. The res folder usually contains the following subfolders:
drawable: contains all images you reference from within the application. There are actually four different drawable folders designed to contain images in different resolutions for devices with different screen density (expressed as dpi - dots per inch):
hdpi (high density, 240)
ldpi (low density, 120)
mdpi (medium density, 160)
xhdpi (extra high density, 320)
Designing drawable resources in different resolutions is required to support different devices and multiple screens (for more details, see to Supporting Multiple Screens).
layout: contains layout files .xml used to define the user interface of an activity or an application widget. You can edit layout definition files manually, or through the integrated graphical designer (for more details, see Designing Layout of Android Application).
values: contains .xml files that declare strings, graphical styles, and colors. Normally, data stored in these files is expressed in the form of name/value pairs.
menu: contains definitions of menus to be used by the application. The menu folder is not generated when you create a new project, and only appears in the project structure after you have created the first menu.
Explore the AndroidManifest.xml File
Each Android application must have the AndroidManifest file in its root directory. This file contains general information about the application processed by the Android operating system. This information is essential to run the application.
Among other things, the AndroidManifest.xml file declares the package name (that serves as a unique identifier for your application), and the minimal version of the Android SDK required for the device where the application will run. It also declares the entry point in the code for the operating system to launch the application, along with permissions the application requires. For more details on the AndroidManifest file, see App Manifest.