ไฟล์ iml ใน Android Studio คืออะไร?


186

ไฟล์ iml ในโครงการ Android Studio คืออะไร? ฉันอ่านว่ามันเป็นไฟล์กำหนดค่าสำหรับโมดูล ฉันไม่เข้าใจวิธีการทำงานและไม่สามารถใช้สคริปต์ gradle เพื่อรวมเข้ากับโมดูลภายนอกที่คุณเพิ่มลงในโครงการของคุณ

นอกจากนี้ส่วนใหญ่แล้วตามที่สร้างพวกเขาดังนั้นฉันไม่สามารถควบคุมพฤติกรรมของโครงการ หากฉันมีทีมที่ทำงานใน Eclipse และ AS ของ IDE ที่ต่างกันเป็นไปได้ไหมที่จะตั้งค่าโปรเจคของฉันดังนั้นมันจึงเป็น IDE ที่ไม่เชื่อเรื่องพระเจ้า?

ฉันไม่เข้าใจว่าระบบนี้ทำงานอย่างไร

คำตอบ:


172

ไฟล์ iml ในโครงการ Android Studio คืออะไร?

การค้นหาของ Google iml fileปรากฏขึ้น:

IML เป็นไฟล์โมดูลที่สร้างโดย IntelliJ IDEA ซึ่งเป็น IDE ที่ใช้ในการพัฒนาแอปพลิเคชัน Java มันเก็บข้อมูลเกี่ยวกับโมดูลการพัฒนาซึ่งอาจเป็นส่วนประกอบ Java, ปลั๊กอิน, Android หรือ Maven บันทึกเส้นทางโมดูลการอ้างอิงและการตั้งค่าอื่น ๆ

(จากหน้านี้ )

ทำไมไม่ใช้สคริปต์ gradle เพื่อรวมกับโมดูลภายนอกที่คุณเพิ่มในโครงการของคุณ

คุณ "ใช้สคริปต์ gradle เพื่อรวมเข้ากับโมดูลภายนอก" หรือโมดูลของคุณเอง

อย่างไรก็ตาม Gradle ไม่ใช่รูปแบบโครงการดั้งเดิมของ IntelliJ IDEA - ซึ่งแยกกันอยู่ใน.imlไฟล์และข้อมูลเมตาใน.idea/ไดเรกทอรี ใน Android สตูดิโอ, สิ่งที่ถูกสร้างขึ้นส่วนใหญ่ออกจาก Gradle สร้างสคริปต์ซึ่งเป็นเหตุผลที่คุณจะได้รับแจ้งให้บางครั้ง "โครงการซิงค์กับ Gradle ไฟล์" build.gradleเมื่อคุณเปลี่ยนไฟล์เช่น นี่คือเหตุผลที่คุณไม่ต้องกังวลกับการวาง.imlไฟล์หรือ.idea/ในการควบคุมเวอร์ชันเพราะเนื้อหาจะถูกสร้างใหม่

ถ้าฉันมีทีมที่ทำงานใน IDE ที่ต่างกันเช่น Eclipse และ AS จะทำให้โครงการ IDE ไม่เชื่อเรื่องพระเจ้าได้อย่างไร

คุณไม่สามารถทำได้

คุณยินดีที่จะมีโครงการ Android ที่ใช้โครงสร้างไดเรกทอรีสไตล์ Eclipse (เช่นทรัพยากรและรายการในไดเรกทอรีรากของโครงการ) คุณสามารถสอน Gradle ผ่านbuild.gradleวิธีการค้นหาไฟล์ในโครงสร้างนั้น อย่างไรก็ตามข้อมูลเมตาอื่น ๆ (การcompileSdkVersionพึ่งพา ฯลฯ ) จะไม่ถูกจำลองแบบได้อย่างง่ายดาย

ทางเลือกอื่น ๆ ได้แก่ :

  • ย้ายทุกคนไปยังระบบการสร้างอื่นเช่น Maven ที่รวมกันอย่างเท่าเทียมกัน (หรือไม่ขึ้นอยู่กับมุมมองของคุณ) ทั้ง Eclipse และ Android Studio

  • หวังว่าAndmoreจะปิดตัวเร็ว ๆ นี้ดังนั้นบางทีคุณอาจมี Eclipse IDE ที่สามารถสร้างโครงการ Android จาก Gradle build script

  • ให้ทุกคนใช้หนึ่ง IDE


1
จะเกิดอะไรขึ้นถ้าฉันลบไฟล์ iml มันจะไม่เป็นไร
E-Place

1
@ E-Place: หากคุณใช้ Android Studio คุณจะต้องสร้าง Android Studio ใหม่อีกครั้งโดยปกติจะนำเข้าโครงการ Android Studio ไม่สามารถทำงานได้หากไม่มี
CommonsWare

iml สามารถสร้างได้อย่างไร? ฉันมีไฟล์ iml มากกว่า 4 ไฟล์
E-Place

@ E-Place: โดยปกติคุณจะมีหนึ่ง.imlไฟล์ในรูทโปรเจ็กต์บวกหนึ่ง.imlไฟล์ในแต่ละโมดูลโมดูล (เช่น, app/) คุณอาจลองใช้เครื่องมือ> Android> ซิงค์โครงการด้วยไฟล์ Gradle มิฉะนั้นคุณอาจต้องนำเข้าโครงการอีกครั้ง หากคุณมีข้อกังวลเพิ่มเติมในเรื่องนี้โปรดถามคำถาม Stack Overflow ที่สดใหม่
CommonsWare

1
คุณสามารถให้ทุกคนใช้ IDE เดียวกันอย่างน้อยก็เกี่ยวกับ*.imlไฟล์และ.idea/ไดเรกทอรีโดยสมมติว่าคุณกระจาย / ซิงโครไนซ์ไฟล์โดยใช้gitหรือคล้ายกัน เพื่อgitให้แน่ใจว่ามีการอ้างอิงไฟล์ที่คุณไม่ต้องการซิงค์ใน.gitignoreไฟล์ตามที่ @Pavel Synek แนะนำด้านล่าง คุณจะต้องลบออกจากพื้นที่เก็บข้อมูลและงอกใหม่ / เรียกคืนพวกเขาในประเทศ แต่นั่นเป็นเพียงmv, และgit commit mv
Sarah Messer

76

เพิ่ม.ideaและ*.imlไปที่.gitignoreคุณไม่จำเป็นต้องใช้ไฟล์เหล่านั้นในการนำเข้าและรวบรวมโครงการสำเร็จ


16
ตกลง แต่พวกเขาคืออะไร พวกเขาทำงานอย่างไรและมีผลกระทบอะไรบ้าง ฉันกำลังค้นหาแหล่งที่มาของโครงการอื่นและมีโมดูลในไฟล์ iml ที่แสดงเฉพาะที่นั่นเช่น gigya และฉันไม่เห็นมันในที่อื่นยกเว้นรายการ ดังนั้นโมดูลนั้นมีอยู่ในโครงการหรือไม่
shadox

3
.ideaในภาพรวมไม่ควรเพิกเฉย มันมีหลายไฟล์เช่นกฎผ้าสำลีและพจนานุกรมที่กำหนดเองว่าทีมจะต้องการตรวจสอบในการควบคุมเวอร์ชัน
M-Pixel

2
สิ่งนี้ไม่แม้แต่จะพยายามตอบคำถาม
เดซี่

12

เป็นไฟล์โครงการที่เก็บข้อมูลโมดูลและข้อมูลเมตา

เพียงแค่เพิ่มการ*.iml.gitignore

ใน Android Studio: กดCTRL+ F9เพื่อสร้างโครงการของคุณใหม่ *.imlไฟล์ที่หายไปจะถูกสร้างขึ้น


2

ไฟล์เหล่านั้นถูกสร้างและใช้งานโดยโปรแกรมแก้ไข Android Studio

คุณไม่จำเป็นต้องเช็คอินไฟล์เหล่านั้นเพื่อควบคุมเวอร์ชัน

Git ใช้ไฟล์. gignignore ที่มีรายการไฟล์และไดเรกทอรีเพื่อรับรู้รายการไฟล์และไดเรกทอรีที่ไม่จำเป็นต้องเช็คอิน

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

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