Из документации (Android Studio основана на Intellij IDEA):
Что бы вы ни делали в IntelliJ IDEA, вы делаете это в контексте проекта. Проект - это организационная единица, которая представляет собой законченное программное решение.
Ваш готовый продукт может быть разбит на серию отдельных, изолированных модулей, но это определение проекта, которое объединяет их и связывает в единое целое.
Для Android это означает один проект на приложение и один модуль на библиотеку и каждое тестовое приложение.
Если вы попытаетесь создать несколько приложений в одном проекте, возникнет несколько проблем. Это возможно, но если вы попробуете (как я), вы увидите, что почти все предназначено для работы с одним приложением для каждого проекта.
Например, есть возможность «перестроить проект», что не имеет смысла для нескольких приложений, многие другие настройки проекта будут бесполезны, а встроенная система VCS не очень хороша, если у вас несколько репозиториев.
KISS ответ:
модуль в Android Studio похож на проект в Eclipse
проект в Android Studio похож на рабочее пространство в Eclipse
источник
источник
Из обновленных документов [2019]:
Пример:
Помимо этого, у вас также может быть «модуль локальной библиотеки». Скажем, вы разрабатываете структуру управления учетными записями как библиотечный модуль, который будет использоваться в конечном итоге в вашем приложении, вы можете сделать это как отдельный модуль в том же проекте. Чтобы включить это в свое приложение, вам нужно будет написать что-то вроде:
compile project(':mylibrary')
Документы говорят,
Наконец, Intellij упоминает некоторые дополнительные сведения о файлах конфигурации модуля:
На этот
.iml
файл немного страшно смотреть. Вот пример из моего проекта:<?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
,?). В этом гораздо больше смысла.IntelliJ IDEA создает проект для всей базы кода, с которой вы работаете, и модуль для каждого из его отдельных компонентов. Итак, модуль IntelliJ IDEA больше похож на проект Eclipse, а проект примерно похож на рабочее пространство Eclipse. Нет точного эквивалента рабочей области Eclipse, которая содержит всю вашу работу, но вы можете открывать несколько проектов в нескольких фреймах одновременно.
Вот страница IntelliJ IDEA Q&A для пользователей Eclipse:
http://www.jetbrains.com/idea/documentation/migration_faq.html
источник
Модули похожи на apkLibs, т.е. у него есть собственный res, manifest, тесты и т. Д., Но основное приложение обычно использует различные apklib / модули, чтобы помочь собрать все это в одном решении.
источник
Ссылаясь на ответ @Oded Breiner, я бы сказал, что:
модуль в Android Studio похож на проект в Eclipse
проект в Android Studio похож на рабочий набор в Eclipse
источник