Các tệp iml trong Android Studio là gì?


107

Các tệp iml trong dự án Android Studio là gì? Tôi đọc rằng đó là tập tin cấu hình cho các mô-đun. Tôi không hiểu cách nó hoạt động, và tôi không thể chỉ sử dụng các kịch bản gradle để tích hợp với các module bên ngoài mà bạn thêm vào dự án của mình.

Ngoài ra, phần lớn thời gian AS tạo ra chúng, vì vậy tôi không thể kiểm soát hành vi của dự án. Nếu tôi có một đội ngũ hoạt động trong các IDE khác nhau như Eclipse và AS, thì có thể thiết lập dự án của tôi để nó có tính bất khả tri IDE không?

Tôi không hiểu hoàn toàn cách hoạt động của hệ thống này.

112

Tệp iml trong dự án Android Studio là gì?

Một tìm kiếm của Google trên iml file lần lượt lên:

IML là một tập tin mô-đun tạo ra bởi IntelliJ IDEA, một IDE dùng để phát triển các ứng dụng Java. Nó lưu trữ thông tin về một mô-đun phát triển, có thể là một thành phần Java, Plugin, Android hoặc Maven; lưu các đường dẫn mô-đun, phụ thuộc và các cài đặt khác.

(từ this page)

tại sao không sử dụng các kịch bản gradle để tích hợp với các module bên ngoài mà bạn thêm vào dự án của bạn.

Bạn "sử dụng tập lệnh gradle để tích hợp với mô-đun bên ngoài" hoặc mô-đun của riêng bạn.

Tuy nhiên, Gradle không phải là mô hình dự án gốc của IntelliJ IDEA — riêng biệt, được lưu giữ trong các tệp .iml và siêu dữ liệu trong các thư mục .idea/. Trong Android Studio, nội dung đó phần lớn được tạo ra từ tập lệnh tạo Gradle, đó là lý do tại sao đôi khi bạn được nhắc "đồng bộ hóa dự án với tệp Gradle" khi bạn thay đổi tệp như build.gradle. Đây cũng là lý do tại sao bạn không bận tâm đặt các tệp .iml hoặc .idea/ trong điều khiển phiên bản vì nội dung của chúng sẽ được tạo lại.

Nếu tôi có một nhóm làm việc trong các IDE khác nhau như Eclipse và AS làm thế nào để làm cho dự án IDE bất khả tri?

Ở mức độ lớn, bạn không thể.

Bạn có thể có dự án Android sử dụng cấu trúc thư mục kiểu Eclipse (ví dụ: tài nguyên và tệp kê khai trong thư mục gốc của dự án). Bạn có thể dạy Gradle, qua build.gradle, cách tìm tệp trong cấu trúc đó. Tuy nhiên, siêu dữ liệu khác (compileSdkVersion, phụ thuộc, v.v.) sẽ không được sao chép gần như dễ dàng.

lựa chọn thay thế khác bao gồm:

  • Move tất cả mọi người trên sang một hệ thống xây dựng, như Maven, được tích hợp như nhau (hay không, phụ thuộc vào quan điểm của bạn) cho cả Eclipse và Android Studio

  • Hy vọng rằng Andmore cất cánh sớm, để có lẽ bạn có thể có một IDE Eclipse có thể xây dựng các dự án Android từ Gradle xây dựng các kịch bản

  • Mọi người đều sử dụng một IDE

  0

điều gì sẽ xảy ra nếu tôi xóa tệp iml? nó sẽ ổn chứ? 17 jul. 162016-07-17 16:16:34

+1

@ E-Place: Nếu bạn đang sử dụng Android Studio, bạn sẽ cần phải có Android Studio tạo lại nó, thường bằng cách nhập dự án. Android Studio không thể hoạt động mà không có nó. 17 jul. 162016-07-17 16:18:02

  0

cách iml có thể được tạo ra? tôi có nhiều hơn 4 tệp iml 17 jul. 162016-07-17 16:26:00

  0

@ E-Place: Thông thường, bạn sẽ có một tệp '.iml' trong thư mục gốc của dự án, cộng với một tệp' .iml' trong mỗi thư mục mô-đun (ví dụ: 'app /'). Bạn có thể dùng thử Công cụ> Android> Dự án đồng bộ hóa với Tệp Gradle. Nếu không, bạn có thể cần phải nhập lại dự án. Nếu bạn có thêm thắc mắc trong lĩnh vực này, vui lòng hỏi một câu hỏi Stack Overflow mới. 17 jul. 162016-07-17 16:32:48

+1

Bạn * có thể * để mọi người sử dụng cùng một IDE, ít nhất là đối với các tệp '* .iml' và' .idea/', giả sử bạn đang phân phối/đồng bộ hóa các tệp bằng cách sử dụng' git' hoặc tương tự. Đối với 'git', chỉ cần đảm bảo các tệp bạn không muốn đồng bộ hóa được tham chiếu trong tệp' .gitignore', như @Pavel Synek gợi ý, bên dưới. Bạn sẽ cần xóa chúng khỏi kho lưu trữ và tạo lại/khôi phục chúng cục bộ, nhưng đó chỉ là 'mv',' git commit' và 'mv'. 16 mar. 172017-03-16 17:46:19

  0

Để lưu ý, không chỉ ứng dụng java được phát triển bằng IntelliJ có tệp .iml. Tôi có PhpStorm là một trong những phiên bản IntelliJ và tôi phát triển ứng dụng web với nó, nó vẫn sẽ tạo ra tập tin .iml. 07 jun. 172017-06-07 08:20:27

+1

Điều mỉa mai là tìm kiếm của Google hiện đang trả lời câu trả lời này. Làm tốt lắm :) 27 jul. 172017-07-27 23:53:13


52

Thêm .idea*.iml đến .gitignore, bạn không cần các tệp đó để nhập thành công và biên dịch dự án.

+7

Ok, nhưng chúng là gì? Chúng hoạt động như thế nào và chúng có tác động gì? Tôi đang tìm kiếm thông qua nguồn của một dự án khác và có một mô-đun trong tập tin iml chỉ hiện diện ở đó, ví dụ như gigya và tôi không thấy nó ở bất kỳ nơi nào khác ngoại trừ bản kê khai. Vậy, đó là mô-đun hiện diện trong dự án hay không? 09 jun. 152015-06-09 16:11:00


0

Các tệp đó được tạo và sử dụng bởi trình chỉnh sửa Android Studio.

Bạn không cần phải kiểm tra các tệp đó để kiểm soát phiên bản.

Git sử dụng .gitignore tập tin, có chứa danh sách các tập tin và thư mục, để biết danh sách các tập tin và thư mục mà không cần phải được kiểm tra trong.

Android studio tự động tạo tệp .gitingnore liệt kê tất cả các file và các thư mục không cần phải được kiểm tra trong bất kỳ kiểm soát phiên bản nào.


1

Chúng là các tệp dự án, chứa thông tin mô-đun và dữ liệu meta.

Chỉ cần thêm *.iml đến .gitignore.

Trong Android Studio: Bấm CTRL + F9 để xây dựng lại dự án của bạn. Các tệp *.iml bị thiếu sẽ được tạo.