जवाबों:
से प्रलेखन (एंड्रॉयड स्टूडियो IntelliJ विचार पर आधारित है):
IntelliJ IDEA में आप जो कुछ भी करते हैं, आप एक प्रोजेक्ट के संदर्भ में करते हैं। एक परियोजना एक संगठनात्मक इकाई है जो एक पूर्ण सॉफ्टवेयर समाधान का प्रतिनिधित्व करती है।
आपका तैयार उत्पाद असतत, अलग-थलग मॉड्यूल की एक श्रृंखला में विघटित हो सकता है, लेकिन यह एक परियोजना परिभाषा है जो उन्हें एक साथ लाता है और उन्हें अधिक से अधिक पूरे करता है।
एंड्रॉइड के लिए, इसका अर्थ है प्रति ऐप एक प्रोजेक्ट, और एक मॉड्यूल प्रति लाइब्रेरी और प्रति परीक्षण ऐप।
यदि आप एक ही प्रोजेक्ट में कई ऐप्स बनाने का प्रयास करते हैं तो कई समस्याएँ हैं। यह संभव है, लेकिन अगर आप कोशिश करते हैं (जैसे मैंने किया), तो आप देखेंगे कि लगभग हर चीज को एक प्रोजेक्ट प्रति ऐप के साथ काम करने के लिए डिज़ाइन किया गया है।
उदाहरण के लिए, "प्रोजेक्ट का पुनर्निर्माण" करने का एक विकल्प है, जो कई ऐप के साथ कोई मतलब नहीं रखता है, कई अन्य प्रोजेक्ट सेटिंग्स बेकार होगी, और जब आपके पास कई रिपॉजिटरी हैं, तो अंतर्निहित वीसीएस प्रणाली महान नहीं है।
KISS जवाब:
एंड्रॉइड स्टूडियो में मॉड्यूल एक्लिप्स में एक परियोजना की तरह है
एंड्रॉइड स्टूडियो में प्रोजेक्ट एक्लिप्स में एक कार्यक्षेत्र की तरह है
एंड्रॉइड स्टूडियो में एक परियोजना एक संपूर्ण एंड्रॉइड ऐप का प्रतिनिधित्व करती है। एंड्रॉइड स्टूडियो प्रोजेक्ट में एक या एक से अधिक मॉड्यूल होते हैं ।
एक मॉड्यूल आपके ऐप का एक घटक है जिसे आप स्वतंत्र रूप से बना सकते हैं, परीक्षण कर सकते हैं या डिबग कर सकते हैं।
मॉड्यूल में आपके ऐप के लिए स्रोत कोड और संसाधन होते हैं।
मॉड्यूल आपके ऐप के सोर्स कोड, रिसोर्स फाइल्स और ऐप लेवल सेटिंग्स के लिए एक कंटेनर प्रदान करते हैं, जैसे मॉड्यूल-लेवल बिल्ड फ़ाइल और एंड्रॉइड मैनिफ़ेस्ट फ़ाइल। प्रत्येक मॉड्यूल स्वतंत्र रूप से निर्मित, परीक्षण और डिबग किया जा सकता है।
एंड्रॉइड स्टूडियो अपने प्रोजेक्ट में नए उपकरणों को जोड़ना आसान बनाने के लिए मॉड्यूल का उपयोग करता है। एंड्रॉइड स्टूडियो में कुछ सरल चरणों का पालन करके, आप एक कोड बना सकते हैं जिसमें डिवाइस प्रकार के लिए विशिष्ट कोड होता है, जैसे कि पहनें ओएस या एंड्रॉइड टीवी। एंड्रॉइड स्टूडियो स्वचालित रूप से मॉड्यूल डायरेक्टरी बनाता है, जैसे स्रोत और संसाधन निर्देशिका, और डिवाइस प्रकार के लिए एक डिफ़ॉल्ट बिल्ड.gradle फ़ाइल। इसके अलावा, एंड्रॉइड स्टूडियो अनुशंसित बिल्ड कॉन्फ़िगरेशन के साथ डिवाइस मॉड्यूल बनाता है, जैसे कि एंड्रॉइड टीवी मॉड्यूल के लिए लीनबैक लाइब्रेरी का उपयोग करना।
उदाहरण के लिए:
इनके अलावा, आपके पास "स्थानीय पुस्तकालय मॉड्यूल" भी हो सकता है। कहते हैं, आप अपने ऐप में अंततः उपयोग किए जाने वाले एक लाइब्रेरी मॉड्यूल के रूप में एक खाता प्रबंधन फ्रेमवर्क विकसित करते हैं, आप इसे एक ही प्रोजेक्ट में एक अलग मॉड्यूल के रूप में कर सकते हैं। अपने ऐप में इसे शामिल करने के लिए, आपको कुछ लिखना होगा,
compile project(':mylibrary')
डॉक्स कहते हैं,
यह एंड्रॉइड लाइब्रेरी मॉड्यूल पर एक निर्भरता घोषित करता है जिसका नाम "mylibrary" है (यह नाम आपकी सेटिंग्स में शामिल लाइब्रेरी के रूप में परिभाषित लाइब्रेरी नाम से मेल खाना चाहिए)। लाइब्रेरी मॉड्यूल को आपके ऐप मॉड्यूल के साथ संकलित करने और आपके एपीके में परिणामी एएआर फ़ाइल को शामिल करने के लिए इसे बनाने की आवश्यकता है।
अंत में, Intellij ने मॉड्यूल कॉन्फ़िगरेशन फ़ाइलों के बारे में कुछ और विवरणों का उल्लेख किया है:
एक मॉड्यूल के लिए कॉन्फ़िगरेशन जानकारी एक .iml मॉड्यूल फ़ाइल में संग्रहीत होती है । डिफ़ॉल्ट रूप से, ऐसी फाइल मॉड्यूल की सामग्री रूट फ़ोल्डर में स्थित होती है।
विकास दल, सामान्य रूप से,
.iml
मॉड्यूल फ़ाइलों को संस्करण नियंत्रण के माध्यम से साझा करते हैं ।
यह .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 मॉड्यूल एक ग्रहण परियोजना की तरह अधिक है, और परियोजना लगभग ग्रहण कार्यक्षेत्र के समान है। ग्रहण के कार्यक्षेत्र के बराबर कोई सटीक नहीं है जिसमें आपके सभी कार्य शामिल हैं, लेकिन आप एक ही समय में कई फ़्रेम में कई प्रोजेक्ट खोल सकते हैं।
यहाँ ग्रहण उपयोगकर्ताओं के लिए IntelliJ IDEA Q & A पृष्ठ है-
http://www.jetbrains.com/idea/documentation/migration_faq.html
@ ओयर्ड ब्रेइनर उत्तर का जिक्र करते हुए मैं कहूंगा कि:
एंड्रॉइड स्टूडियो में मॉड्यूल एक्लिप्स में एक परियोजना की तरह है
एंड्रॉइड स्टूडियो में प्रोजेक्ट एक्लिप्स में काम करने वाले सेट की तरह है