A module is the first level of containment within a project that encapsulates specific types of source code files and resources. There are several types of modules with a project:
An Android Application Module is the container for your application's source code, resource files, and application level settings, such as the module-level build file, resource files, and Android Manifest file. The application module contents are eventually built into the .apk file that gets installed on a device.
These modules contain code to test your application projects and are built into test applications that run on a device. By default, Android Studio creates the androidTest module for inserting JUnit tests.
These modules contain shareable Android source code and resources that you can reference in Android projects. This is useful when you have common code that you want to reuse. Library modules cannot be installed onto a device, however, they are pulled into the .apk file at build time.
Android Studio lets you easily add a cloud backend to your application. A backend allows you to implement functionality such as backing up user data to the cloud, serving content to client apps, real-time interactions, sending push notifications through Google Cloud Messaging for Android (GCM), and more. App Engine modules are App Engine java Servlet Module for backend development, App Engine java Endpoints Module to convert server-side Java code annotations into RESTful backend APIs, and App Engine Backend with Google Cloud Messaging to send push notifications from your server to your Android devices.
When you use the Android development tools to create a new project and the module, the essential files and folders will be created for you. There are only a handful of files and folders generated for you, and some of them depend on whether you use Android Studio or the android tool to generate your module. As your application grows in complexity, you might require new kinds of resources, directories, and files.
Note: Project folders and files apply across the entire Android project and override similar module file settings.