Apa file iml di Android Studio?

186

Apa file iml dalam proyek Android Studio? Saya membaca bahwa ini adalah file konfigurasi untuk modul. Saya tidak mengerti cara kerjanya, dan saya tidak bisa hanya menggunakan skrip gradle untuk berintegrasi dengan modul eksternal yang Anda tambahkan ke proyek Anda.

Juga, sebagian besar waktu AS menghasilkan mereka, jadi saya tidak bisa mengendalikan perilaku proyek. Jika saya memiliki tim yang bekerja di IDE yang berbeda seperti Eclipse dan AS, apakah mungkin untuk mengatur proyek saya jadi itu agnostik IDE?

Saya tidak sepenuhnya mengerti bagaimana sistem ini bekerja.

shadox
sumber

Jawaban:

172

Apa file iml dalam proyek Android Studio?

Pencarian Google pada iml filemuncul:

IML adalah file modul yang dibuat oleh IntelliJ IDEA, sebuah IDE yang digunakan untuk mengembangkan aplikasi Java. Ini menyimpan informasi tentang modul pengembangan, yang mungkin komponen Java, Plugin, Android, atau Maven; menyimpan jalur modul, dependensi, dan pengaturan lainnya.

(dari halaman ini )

mengapa tidak menggunakan skrip gradle untuk berintegrasi dengan modul eksternal yang Anda tambahkan ke proyek Anda.

Anda "menggunakan skrip gradle untuk berintegrasi dengan modul eksternal", atau modul Anda sendiri.

Namun, Gradle bukan model asli proyek IntelliJ IDEA - yang terpisah, disimpan dalam .imlfile dan metadata dalam .idea/direktori. Di Android Studio, hal-hal itu sebagian besar dihasilkan dari skrip pembangunan Gradle, itulah sebabnya Anda kadang-kadang diminta untuk "menyinkronkan proyek dengan file Gradle" saat Anda mengubah file seperti build.gradle. Ini juga mengapa Anda tidak perlu repot menaruh .imlfile atau .idea/mengontrol versi, karena kontennya akan dibuat ulang.

Jika saya memiliki tim yang bekerja di IDE yang berbeda seperti Eclipse dan AS bagaimana membuat proyek IDE agnostik?

Untuk sebagian besar, Anda tidak bisa.

Anda dipersilakan untuk memiliki proyek Android yang menggunakan struktur direktori gaya Eclipse (misalnya, sumber daya dan manifes dalam direktori root proyek). Anda dapat mengajar Gradle, melalui build.gradle, cara menemukan file dalam struktur itu. Namun, metadata lain ( compileSdkVersion, dependensi, dll.) Hampir tidak akan mudah ditiru.

Alternatif lain termasuk:

  • Pindahkan semua orang ke sistem build lain, seperti Maven, yang sama-sama terintegrasi (atau tidak, tergantung pada perspektif Anda) ke Eclipse dan Android Studio

  • Semoga Andmore segera lepas landas, sehingga mungkin Anda dapat memiliki Eclipse IDE yang dapat membangun proyek Android dari skrip pembangunan Gradle

  • Suruh semua orang menggunakan satu IDE

CommonsWare
sumber
1
apa yang terjadi jika saya menghapus file iml? itu akan baik-baik saja?
E-Place
1
@ E-Place: Jika Anda menggunakan Android Studio, Anda harus memiliki Android Studio untuk membuatnya kembali, biasanya dengan mengimpor proyek. Android Studio tidak dapat berfungsi tanpanya.
CommonsWare
bagaimana iml dapat dibuat? Saya punya lebih dari 4 file IML
E-Place
@ E-Place: Biasanya, Anda akan memiliki satu .imlfile di root proyek, ditambah satu .imlfile di setiap direktori modul (misalnya, app/). Anda dapat mencoba Alat> Android> Sinkronkan Proyek dengan File Gradle. Jika tidak, Anda mungkin perlu mengimpor kembali proyek. Jika Anda memiliki masalah tambahan di bidang ini, silakan tanyakan pertanyaan Stack Overflow baru.
CommonsWare
1
Anda dapat meminta semua orang menggunakan IDE yang sama, setidaknya sehubungan dengan *.imlfile dan .idea/direktori, dengan asumsi Anda mendistribusikan / menyinkronkan file menggunakan gitatau serupa. Sebab git, pastikan file yang tidak ingin Anda sinkronkan dirujuk dalam .gitignorefile, seperti yang disarankan @Pavel Synek, di bawah ini. Anda harus menghapus mereka dari repositori dan meregenerasi / memulihkan mereka secara lokal, tapi itu hanya mv, git commit, dan mv.
Sarah Messer
76

Tambahkan .ideadan *.imlke .gitignore, Anda tidak perlu file-file itu untuk berhasil mengimpor dan mengkompilasi proyek.

Pavel Synek
sumber
16
Ok, tapi apa mereka? Bagaimana mereka bekerja dan dampak apa yang mereka miliki? Saya mencari melalui sumber proyek lain dan ada modul dalam file iml yang hanya ada di sana, untuk gigya misalnya dan saya tidak melihatnya di tempat lain kecuali manifes. Jadi, apakah modul itu ada dalam proyek atau tidak?
shadox
3
.ideasecara keseluruhan tidak boleh diabaikan. Ini berisi beberapa file, seperti aturan serat dan kamus khusus, yang pasti ingin diperiksa oleh tim dalam kontrol versi.
M-Pixel
2
Ini bahkan tidak berusaha menjawab pertanyaan.
Daisy
12

Mereka adalah file proyek, yang menyimpan informasi modul dan data meta.

Hanya menambahkan *.imlke .gitignore.

Di Android Studio: Tekan CTRL+ F9untuk membangun kembali proyek Anda. File yang hilang *.imlakan dihasilkan.

Serigala merah
sumber
2

File-file itu dibuat dan digunakan oleh editor Android Studio.

Anda tidak perlu memeriksa file-file itu untuk mengontrol versi.

Git menggunakan file .gitignore, yang berisi daftar file dan direktori, untuk mengetahui daftar file dan direktori yang tidak perlu diperiksa.

Android studio secara otomatis membuat file .gitingnore daftar semua file dan direktori yang tidak perlu diperiksa ke kontrol versi apa pun.

Arnav Rao
sumber