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.
Jawaban:
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
,Flavors
danVariants
(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):
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:
HelloWorldProject
jika 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 .:
HelloWorld
jika nama aplikasi yang Anda berikan adalah HelloWorld4. 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
make
proses 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 bawah
build/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
java
danres
yang sesuai dengansrc
folder danres
folder 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
danrelease
yangbuildTypes
tersedia secara default pada semua proyek. Mereka digunakan untuk membuat / mengompilasi KODE YANG SAMA untuk menghasilkan APK yang berbeda. Misalnya padarelease
APK Anda ingin menjalankan proguard (untuk obfuscation), menandatanganinya dengan kunci Anda (berlawanan dengan kunci debug), menjalankan pengoptimalan (mungkin melalui proguard atau alat lain), gunakan sedikit berbedapackageNames
(kami gunakancom.company.product
untukrelease
dancom.company.product.debug
untukdebug
), dll. Kami juga menggunakan flag debug (BuildConfig.DEBUG
) untuk mematikan logging ke logcat (karena membuat aplikasi menjadi lambat) padarelease
build. Ini membuatdebug
build lebih cepat selama pengembangan tetapi jugarelease
build yang dioptimalkan untuk digunakan di play store.Rasa Produk: Tidak ada rasa default yang tersedia (atau tepatnya, rasa default adalah kosong / tanpa nama).
Flavors
bisa versi gratis atau versi berbayar di mana mereka memiliki KODE BERBEDA . Mereka berbagiMain
Kode yang sama tetapi versi yang berbeda (atau tanpa versi) dari beberapa file kode sumber atau sumber daya.BuildVariant: A
buildVariant
adalah sesuai dengan APK yang dihasilkan. Mereka diberi nama seperti itu (dalam urutan)Product Flavor
+Build Type
=Build Variant
.Contoh 1: jika Anda memiliki
free
danpaid
sebagai 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
buildVariants
atau APK yang tersedia, karena ragam defaultnya adalah tanpa nama / kosong: rilisdebug
Bandingkan ini dengan Struktur Proyek Intellij jika itu membantu:
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.
sumber
java
danres
berada di bawahsrc/main
.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 ):
Jadi, di mana Eclipse / ADT dapat menghasilkan satu
R.java
file, Android Studio mendukung banyak file. Yang dihasilkanR.java
terletak didebug
folder karena secara default sistem build baru mendukungdebug
danrelease
membangun tipe langsung. Jika Anda mengubah varian build (tombol, pojok kiri bawah AS) ke rilis, AS akan dibuatR.java
direlease
direktori.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.java
file tersebut ada di dalamnyabuild/source/<flavor>/r/<build type>/package/R.java
. Saat server CI kami membuat file APK, masing-masing file ini digunakanR.java
untuk menghasilkan paket terpisah.sumber
Jadi yang terbaik untuk alat pengembangan Android untuk Android Studio hanya untuk semua dukungan Android M di masa mendatang ---
sumber
Untuk android Studio 3.0.1 dan memilih semua fitur:
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:
sumber