Understanding Android Project Structure

Its very important to understand the structure of the Android Project before you start developing
your applications . So in a very short tutorial we are going to understand the structure of Android
project .

1. src - This folder will contain all your java source files .
2. gen - Generated java library , no tampering with this folder . It is used for Android internal
purpose only.
3. libs - This will contain all the external libraries that required for the project .
4. res - (Resources directory) As the name suggests , the resources you need for your
project needs to be placed here. The res will contain sub folders to segregate the
resources . Some of the important sub-folders are .
a) drawable - It will contain all the images and logos that are required in your android
application . In your project you will find 4 different types of drawable resources
folder , this is to support different type of screen densities . There is a good description
on Android Developer Docs on Screen Densities .
b) values - It will contain a strings.xml , styles.xml and dimens.xml in which you will be
storing values that you are going to mostly reuse in your application . Its a good practice
to store the string values in string resource file and access it using the identifier in your code.
c) layout - It will contain all the layout resource files the Android Application Activities will
be using in your application .

5. Android Manifest File

It presents important information about your app to the Android system . Its the
information the Android system must have before it runs any of your App's code .All the the activities, services, broadcast receivers, and content providers that your
application is using must be declared inside the Android Manifest file . Apart from
that the manifest file will contain the list of permissions the application will be needing
to run on your phone . It also declares permissions other apps will require to interact with
your app . Sample Android Manifest file from one of my apps .

An activity having the android.intent.action.MAIN and android.intent.category.LAUNCHER settings in the intent-filter indicates that it will be the launcher Activity for the Application. We will also
be specifying the icon ,label and default theme of the app inside the Application tag .The target sdk and the minimum sdk required for the App is also displayed in the Android
manifest file . As you can see the permissions required for the App to run on the Android
system is also displayed on the Manifest file . This means we will be requiring internet access
and camera hadrware access for the Application .