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

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

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.