Respuestas:
De la documentación (Android Studio se basa en Intellij IDEA):
Hagas lo que hagas en IntelliJ IDEA, lo haces en el contexto de un proyecto. Un proyecto es una unidad organizativa que representa una solución de software completa.
Su producto terminado puede descomponerse en una serie de módulos discretos y aislados, pero es una definición de proyecto que los une y los une en un todo mayor.
Para Android, significa un proyecto por aplicación y un módulo por biblioteca y por aplicación de prueba.
Hay varios problemas si intenta crear múltiples aplicaciones dentro del mismo proyecto. Es posible, pero si lo intentas (como lo hice), verás que casi todo está diseñado para funcionar con una sola aplicación por proyecto.
Por ejemplo, hay una opción para "reconstruir el proyecto", lo que no tiene sentido con múltiples aplicaciones, muchas otras configuraciones del proyecto serían inútiles, y el sistema VCS incorporado no es excelente cuando tienes múltiples repositorios.
BESO respuesta:
módulo en Android Studio es como un proyecto en Eclipse
proyecto en Android Studio es como un espacio de trabajo en Eclipse
Un proyecto en Android Studio representa una aplicación completa de Android. Los proyectos de Android Studio consisten en uno o más módulos .
Un módulo es un componente de su aplicación que puede compilar, probar o depurar de forma independiente.
Los módulos contienen el código fuente y los recursos para su aplicación.
Los módulos proporcionan un contenedor para el código fuente de su aplicación, los archivos de recursos y la configuración del nivel de la aplicación, como el archivo de compilación de nivel de módulo y el archivo de manifiesto de Android. Cada módulo se puede construir, probar y depurar de forma independiente.
Android Studio utiliza módulos para facilitar la adición de nuevos dispositivos a su proyecto. Siguiendo unos sencillos pasos en Android Studio, puede crear un módulo que contenga código específico para un tipo de dispositivo, como Wear OS o Android TV. Android Studio crea automáticamente directorios de módulos, como directorios de origen y recursos, y un archivo build.gradle predeterminado apropiado para el tipo de dispositivo. Además, Android Studio crea módulos de dispositivo con configuraciones de compilación recomendadas, como el uso de la biblioteca Leanback para módulos de Android TV.
Ex:
Además de estos, también puede tener un "módulo de biblioteca local". Supongamos que desarrolla un Marco de gestión de cuentas como un módulo de biblioteca que se utilizará en última instancia en su aplicación, puede hacerlo como un módulo separado en el mismo proyecto. Para incluir eso en tu aplicación, deberías escribir algo como,
compile project(':mylibrary')
Los doctores dicen:
Esto declara una dependencia en un módulo de biblioteca de Android llamado "mylibrary" (este nombre debe coincidir con el nombre de biblioteca definido como incluir en su archivo settings.gradle). Requiere que el sistema de compilación compile el módulo de la biblioteca con el módulo de su aplicación e incluya el archivo AAR resultante en su APK.
Por último, Intellij menciona algunos detalles más sobre los archivos de configuración del Módulo:
La información de configuración de un módulo se almacena en un archivo de módulo .iml . De manera predeterminada, dicho archivo se encuentra en la carpeta raíz de contenido del módulo.
Los equipos de desarrollo, normalmente, comparten los
.imlarchivos del módulo a través del control de versiones.
Este .imlarchivo es un poco aterrador de ver. Aquí hay un ejemplo de mi proyecto:
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="LearnCity" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android-gradle" name="Android-Gradle">
<configuration>
<option name="GRADLE_PROJECT_PATH" value=":app" />
</configuration>
</facet>
<facet type="android" name="Android">
<configuration>
<option name="SELECTED_BUILD_VARIANT" value="debug" />
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
<afterSyncTasks>
<task>generateDebugSources</task>
</afterSyncTasks>
<option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res/layouts/common/layout/ver3/layout" />
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver3/layout;file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver3;file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver2/layout;file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver2;file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver1/layout;file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver1;file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver0/layout;file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver0;file://$MODULE_DIR$/src/main/res/layouts/common/layout;file://$MODULE_DIR$/src/main/res/layouts/learner/layout;file://$MODULE_DIR$/src/main/res/layouts/tutor/layout;file://$MODULE_DIR$/src/main/res/layouts/obsolete/layout;file://$MODULE_DIR$/src/main/res/layouts/common;file://$MODULE_DIR$/src/main/res/layouts/learner;file://$MODULE_DIR$/src/main/res/layouts/tutor;file://$MODULE_DIR$/src/main/res/layouts/obsolete;file://$MODULE_DIR$/src/main/res/layouts;file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/src/debug/res" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/google-services/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver3/layout" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver3" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver2/layout" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver2" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver1/layout" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver1" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver0/layout" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver0" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/learner/layout" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/tutor/layout" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/obsolete/layout" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/learner" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/tutor" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/obsolete" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/multi-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/restart-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
<orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" name="google-http-client-android-1.22.0" level="project" />
<orderEntry type="library" exported="" name="firebase-analytics-10.2.0" level="project" />
<orderEntry type="library" exported="" name="firebase-core-10.2.0" level="project" />
<orderEntry type="library" exported="" name="play-services-auth-base-10.2.0" level="project" />
<orderEntry type="library" exported="" name="gson-2.8.0" level="project" />
<orderEntry type="library" exported="" name="play-services-tasks-10.2.0" level="project" />
<orderEntry type="library" exported="" name="constraint-layout-1.0.2" level="project" />
<orderEntry type="library" exported="" name="appengine-api-1.0-sdk-1.9.50" level="project" />
<orderEntry type="library" exported="" name="design-25.3.0" level="project" />
<orderEntry type="library" exported="" name="android-job-1.1.8" level="project" />
<orderEntry type="library" exported="" name="transition-25.3.0" level="project" />
<orderEntry type="library" exported="" name="play-services-base-10.2.0" level="project" />
<orderEntry type="library" exported="" name="multispinner-0.1.1" level="project" />
<orderEntry type="library" exported="" name="play-services-auth-10.2.0" level="project" />
<orderEntry type="library" exported="" name="support-core-ui-25.3.0" level="project" />
<orderEntry type="library" exported="" name="simpleratingbar-0.1.5" level="project" />
<orderEntry type="library" exported="" name="play-services-maps-10.2.0" level="project" />
<orderEntry type="library" exported="" name="play-services-location-10.2.0" level="project" />
<orderEntry type="library" exported="" name="firebase-iid-10.2.0" level="project" />
<orderEntry type="library" exported="" name="support-core-utils-25.3.0" level="project" />
<orderEntry type="library" exported="" name="jsr305-2.0.1" level="project" />
<orderEntry type="library" exported="" name="support-fragment-25.3.0" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="multidex-instrumentation-1.0.1" level="project" />
<orderEntry type="library" exported="" name="constraint-layout-solver-1.0.2" level="project" />
<orderEntry type="library" exported="" name="androidannotations-api-3.2" level="project" />
<orderEntry type="library" exported="" name="java-uuid-generator-3.1.4" level="project" />
<orderEntry type="library" exported="" name="google-http-client-1.22.0" level="project" />
<orderEntry type="library" exported="" name="firebase-messaging-10.2.0" level="project" />
<orderEntry type="library" exported="" name="firebase-analytics-impl-10.2.0" level="project" />
<orderEntry type="library" exported="" name="firebase-common-10.2.0" level="project" />
<orderEntry type="library" exported="" name="eventbus-3.0.0" level="project" />
<orderEntry type="library" exported="" name="cat-1.0.5" level="project" />
<orderEntry type="library" exported="" name="play-services-basement-10.2.0" level="project" />
<orderEntry type="library" exported="" name="support-compat-25.3.0" level="project" />
<orderEntry type="library" exported="" name="support-v4-25.3.0" level="project" />
<orderEntry type="library" exported="" name="multidex-1.0.1" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="hamcrest-core-1.3" level="project" />
<orderEntry type="library" exported="" name="support-media-compat-25.3.0" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="junit-4.12" level="project" />
<orderEntry type="library" exported="" name="recyclerview-v7-25.3.0" level="project" />
<orderEntry type="library" exported="" name="appcompat-v7-25.3.0" level="project" />
<orderEntry type="library" exported="" name="animated-vector-drawable-25.3.0" level="project" />
<orderEntry type="library" exported="" name="support-annotations-25.3.0" level="project" />
<orderEntry type="library" exported="" name="support-vector-drawable-25.3.0" level="project" />
<orderEntry type="module" module-name="backend" exported="" />
<orderEntry type="library" exported="" name="android-android-25" level="project" />
</component>
</module>
@Deprecated,?). Esto tiene mucho más sentido.
IntelliJ IDEA crea un proyecto para toda la base de código con la que trabaja, y un módulo para cada uno de sus componentes individuales. Entonces, el módulo IntelliJ IDEA se parece más a un proyecto Eclipse, y el proyecto es más o menos similar al espacio de trabajo Eclipse. No existe un equivalente exacto del espacio de trabajo de Eclipse que contenga todo su trabajo, pero puede abrir varios proyectos en varios marcos al mismo tiempo.
Aquí está la página de preguntas y respuestas de IntelliJ IDEA para usuarios de Eclipse:
http://www.jetbrains.com/idea/documentation/migration_faq.html
Refiriéndome a la respuesta de @Oded Breiner, diría que:
módulo en Android Studio es como un proyecto en Eclipse
proyecto en Android Studio es como un conjunto de trabajo en Eclipse