Struktur Proyek Android Studio (vs Struktur Proyek Eclipse)

109

Saya mencoba mempelajari pengembangan Android dan awalnya saya bingung dengan struktur proyek yang berbeda antara Eclipse dan Android Studio. Ini menyulitkan untuk mengikuti tutorial yang dirancang untuk Eclipse. Adakah yang bisa memberi tahu saya mengapa perbedaan ini ada? Haruskah mereka ada?

Misalnya, jika saya mencari file R.java di dua IDE yang berbeda, jalurnya akan terlihat seperti ini:

Gerhana: app \ gen \ com.example.app \ R.java

Android Studio: app \ build \ source \ r \ debug \ com.example.app \ R.java

Mengapa jalur ini berbeda? Mengapa R.java saya berada di folder debug di Android Studio? Hal ini menyebabkan beberapa kesalahan sejak awal, dan jika ada yang memiliki wawasan tentang perbedaan ini, saya akan menghargainya.

Jesse
sumber
3
Saya mencoba memposting gambar dalam pertanyaan ini, tetapi saya membutuhkan setidaknya 10 reputasi. Saya akan mengedit postingan untuk menyertakan gambar setelah saya memenuhi syarat.
Jesse
9
Mengapa Anda tidak menggunakan Eclipse sehingga Anda hanya menangani masalah khusus Android dan bukan masalah IDE (terutama karena Android Studio dalam pratinjau akses awal )?
Luksprog
3
Sepakat. Kecuali Anda memiliki setidaknya satu tahun pengalaman pengembangan Android, IMHO Anda tidak boleh main-main dengan Android Studio sampai ia meninggalkan mode "pratinjau akses awal".
CommonsWare
2
Saya akan menambahkan bahwa Anda dapat menggunakan IntelliJ IDEA sebagai gantinya, karena sangat stabil. Selain itu, setelah Android Studio lebih stabil, pemindahan ke sana akan sangat mudah karena keduanya adalah IDE yang sama (dengan AS hanya menyediakan integrasi Android yang ditingkatkan).
free3dom
3
Saya telah memiliki 3 tahun pengalaman dalam pengembangan Android menggunakan Eclipse dan saya sangat kesulitan menggunakan A.Studio. Saya berharap seseorang memberikan jawaban langsung karena sudah waktunya orang pindah; Saya sudah pindah. Saya tidak ingin bekerja berdasarkan firasat selama pengembangan.
Dheeraj Bhaskar

Jawaban:

203

Misteri: Struktur Proyek dan Sistem Bangun Android Studio

Saya tidak tahu apakah ini karena Gradle Build System (saya berani bertaruh), tetapi saya akan memberi tahu Anda apa yang telah saya pahami sejauh ini.

Pembaruan 4: 2014/09/11 Menambahkan Lembar Cheat untuk BuildTypes, Flavorsdan Variants(akhirnya saya merasa percaya diri untuk menulis ini: D)
Pembaruan 3: 2014/09/11 Memperbarui ruang kerja perbandingan dan proyek tepatnya
Pembaruan 2: 2014/04/17 Menambahkan lebih banyak detail ke struktur proyek AS
Pembaruan 1: 2013/07/29 Menambahkan Struktur Proyek IntelliJ

Struktur Proyek IntelliJ (ditampilkan di bagian akhir) adalah untuk IntelliJ dengan plugin android. Android Studio, bagaimanapun, memiliki struktur proyek yang dibagi seperti ini:

Struktur: Proyek dan Modul

modul di Android Studio seperti proyek di Eclipse

proyek di Android Studio seperti ruang kerja di Eclipse (tepatnya, ruang kerja dengan proyek yang saling bergantung)

Dari dokumentasi (Android Studio didasarkan pada Intellij IDEA):

Apa pun yang Anda lakukan di IntelliJ IDEA, Anda melakukannya dalam konteks proyek. Proyek adalah unit organisasi yang mewakili solusi perangkat lunak lengkap.

Produk jadi Anda dapat diuraikan menjadi serangkaian modul terpisah dan terpisah, tetapi ini adalah definisi proyek yang menyatukannya dan mengikatnya menjadi keseluruhan yang lebih besar.

Untuk Android, ini berarti satu proyek per aplikasi, dan satu modul per pustaka dan per aplikasi pengujian.

Ada banyak masalah jika Anda mencoba membangun beberapa aplikasi dalam proyek yang sama. Itu mungkin, tetapi jika Anda mencoba (seperti yang saya lakukan), Anda akan melihat bahwa hampir semuanya dirancang untuk bekerja dengan satu aplikasi per proyek.

Misalnya, ada opsi untuk "membangun kembali proyek", yang tidak masuk akal dengan banyak aplikasi, banyak pengaturan proyek lainnya tidak akan berguna, dan sistem VCS bawaan tidak bagus bila Anda memiliki banyak repositori.

Struktur: Struktur Folder

Struktur Proyek Android Studio

Folder Tingkat Atas

1. Proyek Utama

Ini akan menjadi konteks keseluruhan proyek ( Eclipse Land: Seperti ruang kerja Anda tetapi terbatas pada apa yang relevan dengan proyek Anda). Mis: HelloWorldProjectjika nama aplikasi yang Anda berikan adalahHelloWorld

2. ide

Di sinilah metadata spesifik proyek disimpan oleh Android Studio (AS). ( Eclipse Land: project.properties file)

3. Modul Proyek

Ini adalah proyek sebenarnya. mis .: HelloWorldjika nama aplikasi yang Anda berikan adalah HelloWorld

4. gradle

Di sinilah pembungkus jar sistem build gradle yaitu jar ini adalah bagaimana AS berkomunikasi dengan gradle yang diinstal di Windows (OS dalam kasus saya).

5. Perpustakaan Eksternal

Ini sebenarnya bukan folder tetapi tempat di mana Perpustakaan yang Dirujuk ( Eclipse Land: Perpustakaan yang Dirujuk) ditampilkan. Di sinilah Platform Target ditampilkan, dll.

[ Catatan tambahan: Di sini banyak dari kita di Eclipse Land biasa menghapus perpustakaan yang direferensikan dan Perbaiki Properti Proyek untuk memperbaiki kesalahan referensi, ingat?]

Folder Proyek secara Detail

Ini adalah nomor # 3 dari daftar di atas. Memiliki sub dirs berikut

1. membangun

Ini memiliki semua output lengkap dari makeproses yaitu class.dex, class dan resource yang dikompilasi, dll.

Di GUI Android Studio, hanya beberapa folder yang ditampilkan. Bagian yang penting adalah R.java Anda ditemukan di sini di bawahbuild/source/<flavor>/r/<build type(optional)>/<package>/R.java

2. libs

Ini adalah folder libs standar yang Anda lihat di tanah gerhana juga

3. src

Di sini, Anda hanya melihat folder javadan resyang sesuai dengan srcfolder dan resfolder di Eclipse Land . Ini sangat disambut IMHO penyederhanaan.

Catatan tentang Modul:

Modul seperti proyek Eclipse Land . Di sini idenya adalah Anda memiliki satu proyek aplikasi (Modul # 3 dalam daftar di atas) dan beberapa proyek perpustakaan (sebagai Modul terpisah di bawah folder proyek global (# 1 dalam daftar di atas)) yang bergantung pada proyek aplikasi. Bagaimana proyek perpustakaan ini dapat digunakan kembali di aplikasi lain, saya masih belum menemukannya.

[ Catatan tambahan: Seluruh penataan ulang memiliki beberapa manfaat seperti penyederhanaan di folder src, tetapi begitu banyak komplikasi. Komplikasi tersebut terutama disebabkan oleh dokumentasi yang SANGAT SANGAT tipis tentang layout proyek baru ini.

Sistem Bangun Baru

Panduan Pengguna untuk Sistem Bangun baru

Penjelasan flavours dan buildTypes, dll - Apa keributan itu?

CheatSheet untuk rasa dan tipe build

BuildType: debug dan releaseyang buildTypestersedia secara default pada semua proyek. Mereka digunakan untuk membuat / mengompilasi KODE YANG SAMA untuk menghasilkan APK yang berbeda. Misalnya pada releaseAPK Anda ingin menjalankan proguard (untuk obfuscation), menandatanganinya dengan kunci Anda (berlawanan dengan kunci debug), menjalankan pengoptimalan (mungkin melalui proguard atau alat lain), gunakan sedikit berbeda packageNames(kami gunakan com.company.productuntuk releasedan com.company.product.debuguntuk debug), dll. Kami juga menggunakan flag debug ( BuildConfig.DEBUG) untuk mematikan logging ke logcat (karena membuat aplikasi menjadi lambat) pada releasebuild. Ini membuat debugbuild lebih cepat selama pengembangan tetapi juga releasebuild yang dioptimalkan untuk digunakan di play store.

Rasa Produk: Tidak ada rasa default yang tersedia (atau tepatnya, rasa default adalah kosong / tanpa nama). Flavorsbisa versi gratis atau versi berbayar di mana mereka memiliki KODE BERBEDA . Mereka berbagi MainKode yang sama tetapi versi yang berbeda (atau tanpa versi) dari beberapa file kode sumber atau sumber daya.

BuildVariant: A buildVariantadalah sesuai dengan APK yang dihasilkan. Mereka diberi nama seperti itu (dalam urutan) Product Flavor+ Build Type=Build Variant .
Contoh 1: jika Anda memiliki freedan paidsebagai dua rasa. Varian build yang akan Anda dapatkan adalah:
Gratis - debug
Gratis - rilis
Berbayar - debug
Berbayar - rilis
Jadi itu adalah 4 kemungkinan konfigurasi APK. Beberapa konfigurasi mungkin tidak masuk akal dalam proyek tertentu, tetapi mereka yang tersedia.

Contoh 2: (untuk proyek baru / tanpa ragam) Anda memiliki 2 buildVariantsatau APK yang tersedia, karena ragam defaultnya adalah tanpa nama / kosong: rilis
debug

Bandingkan ini dengan Struktur Proyek Intellij jika itu membantu:

Snapshot Struktur Proyek Intellij

Folder .idea (1) berisi sejumlah subfolder, terutama dengan informasi internal IntelliJ IDEA.

Folder src (2) berisi kode sumber file MyActivity.java (3) yang mengimplementasikan fungsionalitas aplikasi Anda. File tersebut termasuk dalam paket com.example.

Folder res (4) berisi berbagai sumber daya visual.

File layout / main.xml (5) mendefinisikan tampilan aplikasi yang terdiri dari sumber daya dari berbagai jenis.

Folder nilai (6) dimaksudkan untuk menyimpan file .xml yang menjelaskan sumber daya dari berbagai jenis. Saat ini, folder tersebut berisi file strings.xml dengan definisi resource String. Seperti yang akan Anda lihat dari bagian Menambahkan Warna, folder tata letak juga dapat berisi, misalnya, deskripsi warna.

Folder drawable (7) berisi gambar.

Folder gen (8) berisi file R.java (9) yang menghubungkan sumber daya visual dan kode sumber Java. Seperti yang akan Anda lihat dari bagian di bawah ini, IntelliJ IDEA mendukung integrasi yang erat antara sumber daya statis dan R.java. Segera setelah sumber daya ditambahkan atau dihapus, kelas yang sesuai dan bidang kelas di R.java secara otomatis dibuat atau dihapus. File R.java juga termasuk dalam paket com.example.

Dheeraj Bhaskar
sumber
3
Terima kasih banyak telah membandingkan struktur proyek Eclipse dan Android Studio! Dan ya, dokumentasi tentang struktur proyek ini dan bagaimana hal itu dapat digunakan dalam perkembangan sehari-hari tidak ada.
kpsfoo
1
"3. src Di sini, Anda hanya melihat folder java dan res ..." Lebih tepatnya, javadan resberada di bawah src/main.
Code-Apprentice
Berikut beberapa dokumentasi tentang struktur folder Android Studio: developer.android.com/sdk/installing/studio-build.html
David d C e Freitas
31

Android Studio: app \ build \ source \ r \ debug \ com.example.app \ R.java

Mengapa jalur ini berbeda? Mengapa R.java saya berada di folder debug di Android Studio? Hal ini menyebabkan beberapa kesalahan sejak awal, dan jika ada yang memiliki wawasan tentang perbedaan ini, saya akan menghargainya.

Sederhananya, Android Studio dikonfigurasi untuk membangun Debug Build Type di sistem Anda.

Eclipse / ADT dirancang untuk mendukung satu build pada satu waktu (dari apa yang saya tahu). Salah satu tujuan utama dari sistem build baru ( dari panduan pengguna ):

Make it easy to create several variants of an application, 
either for multi-apk distribution or for different flavors of an application

Jadi, di mana Eclipse / ADT dapat menghasilkan satu R.javafile, Android Studio mendukung banyak file. Yang dihasilkan R.javaterletak di debugfolder karena secara default sistem build baru mendukung debugdan releasemembangun tipe langsung. Jika Anda mengubah varian build (tombol, pojok kiri bawah AS) ke rilis, AS akan dibuat R.javadi releasedirektori.

Ini mungkin tidak berarti apa-apa untuk proyek sederhana, tetapi dukungan dari Build Variants berarti penyederhanaan drastis dari proses pembangunan untuk banyak pengembang, termasuk proyek yang saya kerjakan.

Project kami mendukung 4 ragam dengan 2 jenis build (debug dan rilis), untuk mendukung total 8 kombinasi APK yang berbeda. Dan masing-masing kombinasi tersebut memiliki konfigurasi yang sedikit berbeda, jadi sistem build ini benar-benar berhasil bagi kami. Studio android saya diinstal pada mesin yang berbeda, tetapi jika memori berfungsi dengan benar, R.javafile tersebut ada di dalamnya build/source/<flavor>/r/<build type>/package/R.java. Saat server CI kami membuat file APK, masing-masing file ini digunakan R.javauntuk menghasilkan paket terpisah.

Joe
sumber
0

Google Menghentikan dukungan untuk Alat Pengembang Android (ADT) di Eclipse telah berakhir, sesuai dengan pengumuman kami. Anda harus memigrasikan proyek pengembangan aplikasi Anda ke Android Studio sesegera mungkin. Untuk informasi selengkapnya tentang transisi ke Android Studio, lihat Bermigrasi ke Android Studio.

Jadi yang terbaik untuk alat pengembangan Android untuk Android Studio hanya untuk semua dukungan Android M di masa mendatang ---

OpenWebWar
sumber
Eclipse untuk Pengembang Android - eclipse.org/downloads/packages/…
Yousha Aleayoub
-2

Untuk android Studio 3.0.1 dan memilih semua fitur:

  • Android O terbaru
  • Android Auto
  • Hal-hal Android
  • Pakaian Android
  • Android TV
  • Dukungan C ++
  • Dukungan Kotlin

Struktur dalam versi 3.0.1 sama sekali tidak terlihat seperti semua jawaban lainnya.

Struktur terbaru seperti yang ditampilkan pada 2018, Android Studio 3.0.1 01/2018.

Pemula agak menemukan sesuatu yang mirip dengan yang dapat digunakan di sub-folder fitur:

Perbarui Android Studio 3.0.1 01_2018 Anda:

ToolTip:

Gigi
sumber