Android studio: โครงการใหม่กับโมดูลใหม่


141

Android สตูดิโอใช้แนวคิดของmodulesขณะ IDEs อื่น ๆ projectsเช่นการใช้งาน อย่างไรก็ตามFileเมนูAS มีตัวเลือกในการสร้างNew Modulenew Projectเช่นเดียวกับ

อะไรคือความแตกต่างระหว่างสองสิ่งนี้ถ้ามี?

แนะนำให้ใช้อันไหน

คำตอบ:


102

จากเอกสาร (Android Studio ใช้ Intellij IDEA):

ไม่ว่าคุณจะทำอะไรใน IntelliJ IDEA คุณจะทำเช่นนั้นในบริบทของโครงการ โครงการเป็นหน่วยองค์กรที่แสดงถึงโซลูชันซอฟต์แวร์ที่สมบูรณ์

ผลิตภัณฑ์ที่เสร็จแล้วของคุณอาจถูกแยกย่อยเป็นชุดของโมดูลที่แยกและแยก แต่เป็นคำจำกัดความของโครงการที่รวมเข้าด้วยกัน

สำหรับ Android หมายถึงหนึ่งโครงการต่อหนึ่งแอพและหนึ่งโมดูลต่อไลบรารีและต่อแอปทดสอบ

มีหลายปัญหาหากคุณพยายามสร้างแอพหลายตัวภายในโครงการเดียวกัน เป็นไปได้ แต่ถ้าคุณลอง (เหมือนที่เคยทำ) คุณจะเห็นว่าเกือบทุกอย่างได้รับการออกแบบให้ทำงานกับแอพเดียวต่อโปรเจ็กต์

ตัวอย่างเช่นมีตัวเลือกในการ "สร้างโครงการใหม่" ซึ่งไม่เหมาะสมกับแอพหลายตัวการตั้งค่าโปรเจ็กต์อื่น ๆ จะไร้ประโยชน์และระบบ VCS ในตัวไม่ดีเมื่อคุณมีที่เก็บหลายแห่ง


1
"มันหมายถึงหนึ่งโครงการต่อหนึ่งแอปและหนึ่งโมดูลต่อไลบรารีและต่อแอปทดสอบ" ... นี่หมายความว่าอย่างไร หาก "แอปทดสอบ" เป็นแอปก็จะมีเพียงสองโมดูลต่อโครงการหนึ่งโมดูลสำหรับแอป (ปกติหรือแอปทดสอบ) และหนึ่งสำหรับไลบรารี
LarsH

2
@ LarsH ฉันจะใช้ถ้อยคำใหม่เป็น: "โครงการต่อแอพหลัก"
Nico

4
นี่ไม่ใช่คำตอบ คำตอบที่ไม่ดี
Métis

169

จูบคำตอบ:

โมดูลในAndroid Studioเป็นเหมือนโครงการในEclipse

โปรเจ็กต์ในAndroid Studioเป็นเหมือนพื้นที่ทำงานในEclipse


8
ฉันได้รับการดิ้นรนกับปัญหานี้ด้วยตัวเองและในขณะนี้ดูเหมือนว่าจะเป็นกรณีที่เป็นแนวคิดฉันสับสน เมื่อฉันสร้าง 'Project' ใหม่ใน Android Studio ฉันจะแสดงตัวช่วยสร้างที่ถามฉันเกี่ยวกับสิ่งต่าง ๆ เช่น Theme การใช้ ActionBar, Grid Layout และอื่น ๆ ฉันคิดว่าสิ่งเหล่านี้จะถูกทิ้งไว้ในโมดูล หากคำถามเหล่านี้เป็นเพียงเพื่อเพิ่ม libs การสนับสนุนที่เหมาะสมใน 'Project' ฉันก็เข้าใจ แต่ฉันก็เห็นสิ่งเดียวกันนี้เมื่อสร้างโมดูลใหม่ ค่อนข้างสับสน
Scott Naef

2
คุณมีประเด็น แต่คำตอบที่ได้รับการยอมรับนั้นจะบันทึกปัญหาที่เกิดขึ้นกับการพยายามทำงานกับ android studio ราวกับว่ามันเป็น eclipse คนส่วนใหญ่ที่กำลังมองหาคำถามนี้เพียงแค่ต้องรู้ว่าการเปรียบเทียบคืออะไร
Oded Breiner

การสร้างโครงการใหม่ใน Android นั้นดูไม่เหมือนแอพที่มีรายการ / res / และ src - ซึ่งถูกผนวกเข้ากับ "เวิร์กสเปซ" เมื่อสร้างโมดูลสองประเภทที่เสนอ ได้แก่ 1) โมดูลแอปพลิเคชันและ 2) โมดูลห้องสมุด android # 1 ดูเหมือนจะซ้ำซ้อนกับ "โครงการใหม่" และ # 1 และ # 2 ดูเหมือนกัน
user1679130

oO เป็นโมดูลที่มากจริง ๆ !
Martin Pfeffer

1
@MartinPfeffer - ไม่ แต่ที่คล้ายคลึงใกล้เคียงที่สุดอ่านเพิ่มเติมที่นี่: jetbrains.org/intellij/sdk/docs/basics/project_structure.html
Oded Breiner

35

โครงการในAndroid สตูดิโอแสดงให้เห็นถึงแอป Android สมบูรณ์ โครงการ Android Studio ประกอบด้วยหนึ่ง โมดูลขึ้นไปไป

โมดูลเป็นส่วนประกอบของแอปที่คุณสามารถสร้างทดสอบหรือการแก้ปัญหาได้อย่างเป็นอิสระ

โมดูลประกอบด้วยซอร์สโค้ดและแหล่งข้อมูลสำหรับแอปของคุณ


10

จากเอกสารที่อัปเดต [2019]:

โมดูลจัดเตรียมคอนเทนเนอร์สำหรับซอร์สโค้ดของแอปไฟล์ทรัพยากรและการตั้งค่าระดับแอพของคุณเช่นไฟล์บิลด์ระดับโมดูลและไฟล์รายการ Android แต่ละโมดูลสามารถสร้างทดสอบและดีบักได้อย่างอิสระ

Android Studio ใช้โมดูลเพื่อให้ง่ายต่อการเพิ่มอุปกรณ์ใหม่ในโครงการของคุณ โดยทำตามขั้นตอนง่ายๆใน Android Studio คุณสามารถสร้างโมดูลเพื่อให้มีรหัสที่เฉพาะเจาะจงกับประเภทอุปกรณ์เช่น Wear OS หรือ Android TV Android Studio สร้างไดเรกทอรีโมดูลโดยอัตโนมัติเช่นแหล่งข้อมูลและไดเรกทอรีทรัพยากรและไฟล์ build.gradle เริ่มต้นที่เหมาะสมกับประเภทอุปกรณ์ นอกจากนี้ Android Studio ยังสร้างโมดูลอุปกรณ์ที่มีการกำหนดค่าการสร้างที่แนะนำเช่นการใช้ห้องสมุด Leanback สำหรับโมดูล Android TV

Ex:

  • โมดูลโทรศัพท์ & แท็บเล็ต
  • โมดูล Android Wear
  • โมดูล Android TV
  • โมดูลแก้ว

นอกจากนี้คุณยังสามารถมี "โมดูลห้องสมุดท้องถิ่น" สมมติว่าคุณพัฒนา Account Management Framework เป็นโมดูลไลบรารีที่จะใช้ในแอพของคุณในที่สุดคุณสามารถทำมันเป็นโมดูลแยกต่างหากในโครงการเดียวกัน หากต้องการรวมสิ่งนั้นไว้ในแอปของคุณคุณจะต้องเขียนสิ่งที่ชอบ

compile project(':mylibrary')

เอกสารพูด

สิ่งนี้เป็นการประกาศการพึ่งพาโมดูลห้องสมุด Android ที่ชื่อว่า "mylibrary" (ชื่อนี้จะต้องตรงกับชื่อไลบรารีที่กำหนดเป็นการรวมในไฟล์ settings.gradle ของคุณ) มันต้องมีระบบการสร้างเพื่อรวบรวมโมดูลห้องสมุดกับโมดูลแอพของคุณและรวมไฟล์ AAR ที่ได้ใน APK ของคุณ

สุดท้าย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>

ในขณะที่คำตอบที่ได้รับการยอมรับนั้นตายแล้วเวลาและแนวโน้มของ Google ในการเปลี่ยนแปลงเหมือนสายลมทำให้มันล้าสมัย (ฉันกล้าพูด@Deprecatedหรือไม่?) มันสมเหตุสมผลมากกว่านี้
Scott Biggs

1

IntelliJ IDEA สร้างโครงการสำหรับฐานรหัสทั้งหมดที่คุณทำงานด้วยและโมดูลสำหรับแต่ละองค์ประกอบ ดังนั้นโมดูล IntelliJ IDEA จึงเป็นเหมือนโครงการ Eclipse และโครงการมีความคล้ายคลึงกับพื้นที่ทำงานคราส ไม่มีอะไรเทียบเท่ากับพื้นที่ทำงานของ Eclipse ที่มีงานทั้งหมดของคุณ แต่คุณสามารถเปิดหลายโครงการในหลายเฟรมในเวลาเดียวกัน

นี่คือหน้าถามตอบ IntelliJ IDEA สำหรับผู้ใช้ Eclipse-

http://www.jetbrains.com/idea/documentation/migration_faq.html


1

โมดูลเป็นเหมือน apkLibs เช่นมีความละเอียดรายการการทดสอบ ฯลฯ แต่แอปหลักมักจะใช้ apklibs / โมดูลต่าง ๆ เพื่อช่วยรวบรวมทั้งหมดไว้ในโซลูชันเดียว


-5

หมายถึง @Oded Breiner คำตอบฉันจะบอกว่า:

โมดูลในAndroid Studioเป็นเหมือนโครงการในEclipse

โปรเจ็กต์ในAndroid Studioเป็นเหมือนชุดการทำงานในEclipse


1
ไม่ได้จริงๆ IMHO "ชุดการทำงาน" ใน Eclipse เป็นเพียง "ตัวกรอง" สำหรับพื้นที่ทำงานปัจจุบัน คุณไม่สามารถมีพื้นที่ทำงานสองแห่งใน Eclipse ได้และคุณไม่สามารถเปิดสองโครงการในอินสแตนซ์เดียวกันของ Android Studio ได้ (ในความเป็นจริงเมื่อคุณเปิดโครงการอื่นคุณต้องแทนที่เดิมหรือเปิดหลังใน หน้าต่างใหม่)
ocramot

1
คุณสามารถแนะนำให้แก้ไขแทนการอ้างอิงคำตอบดั้งเดิมโดยมีการเปลี่ยนแปลงเล็กน้อย!
kokabi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.