Struktur build Android

Project Android berisi banyak file terkait build dan struktur direktori untuk mengatur sumber dan sumber daya aplikasi Anda. Sebelum mempelajari detail konfigurasi, kita akan melihat keseluruhan struktur dan dasar-dasarnya apa yang ada di setiap bagian.

Tabel ini mencantumkan file standar dalam project Android. Deskripsi setiap file atau direktori menyertakan catatan tentang jenis konten yang ada di sana. Terbaik praktik yang berkembang dari waktu ke waktu, dan deskripsi ini mungkin tidak sesuai dengan yang Anda warisi atau unduh dari internet.

Saat menulis file build, gunakan pendekatan deklaratif; logika dan tugas build seharusnya hanya muncul di plugin. Dengan membatasi logika build pada plugin, file build menjadi deklarasi data, yang lebih mudah dipahami dan pengeditan. Versi mendatang dapat menyertakan spesifikasi alternatif seperti Gradle deklaratif, yang akan mencegah logika build di .

Folder/File

Gunakan

.gradle/

Direktori cache project Gradle

Dikelola oleh Gradle dan berisi distribusi Gradle, cache project, dan file konfigurasi yang didownload.

Jangan ubah file di direktori ini!

.ide/

Metadata project Android Studio

Jangan ubah file di direktori ini!

build.gradle(.kts)

File build root

Hanya boleh berisi deklarasi plugin untuk menyiapkan classpath plugin umum di seluruh subproject.

Kode lain harus berada dalam setelan atau file build level project bertingkat.

gradle.properties

Konfigurasi eksekusi Gradle

Berisi properti Gradle, mengontrol aspek lingkungan build Gradle seperti ukuran heap, caching, dan eksekusi paralel.

Beberapa properti Android sementara ditentukan di sini, untuk mengurangi perubahan pada DSL AGP saat ditambahkan dan kemudian dihapus.

gradlew (linux, Mac)

gradlew.bat (Windows)

File Wrapper Gradle

Melakukan bootstrap pada build Anda dengan mendownload distribusi Gradle, lalu meneruskan perintah ke build tersebut. Hal ini memungkinkan Anda menjalankan build tanpa harus menginstal Gradle terlebih dahulu.

local.properties

Konfigurasi mesin lokal

Berisi properti yang terkait dengan mesin lokal, seperti lokasi Android SDK.

Kecualikan file ini dari kontrol sumber.

settings.gradle(.kts)

Inisialisasi build Gradle

Berisi informasi build global untuk inisialisasi Gradle dan konfigurasi project, seperti

  • nama project
  • daftar subproject yang akan disertakan dalam build ini
  • spesifikasi repositori untuk menemukan plugin dan dependensi
  • impor Katalog Versi eksternal.

Gradle/

↳ libs.version.toml

Katalog Versi

Mendefinisikan variabel untuk dependensi dan plugin yang digunakan dalam build Anda. Anda akan menentukan versi yang ingin digunakan di sini, sehingga memastikan konsistensi di seluruh subproject dalam project Anda.

↳ pembungkus/

↳ gradle‐wrapper.jar

Booting Gradle dapat dieksekusi

Mendownload distribusi Gradle yang ditentukan (jika tidak ada), dan menjalankannya, dengan meneruskan argumen apa pun

↳ gradle‐wrapper.properties

Konfigurasi untuk Wrapper Gradle

Menentukan tempat untuk mendownload distribusi Gradle (termasuk versi yang akan digunakan).

aplikasi/

Direktori subproject

Subproject (dikenal sebagai "modul" di Android Studio) dapat membangun aplikasi atau library dan mungkin bergantung pada subproject atau dependensi eksternal lainnya.

app adalah nama konvensional untuk subproject aplikasi level atas (tetapi bukan nama yang diperlukan). Subproject lainnya memiliki struktur serupa dengan nama berbeda.

Direktori apa pun dapat menjadi subproject, dan harus berisi setidaknya file build.gradle(.kts), dan disertakan dalam build menggunakan settings.gradle(.kts).

↳ build.gradle(.kts)

File build tingkat subproject

Mendeklarasikan cara membuat subproject ini. Setiap subproject memerlukan file build terpisah, dan harus berisi

  • plugin yang digunakan untuk membuat subproject ini
  • blok konfigurasi yang diperlukan oleh plugin
  • dependensi (library dan platform) yang disertakan saat membangun subproject ini

Anda tidak boleh menyertakan logika build (seperti definisi atau kondisi fungsi Kotlin) atau deklarasi tugas dalam file build. Logika dan tugas build hanya boleh ada di dalam plugin.

↳ src/

File sumber subproject

Mengelompokkan file sumber (kode aplikasi dan resource) ke dalam set sumber. Set sumber main berisi file sumber yang umum untuk semua varian, sementara set sumber lainnya berisi file sumber yang unik untuk varian.

↳ utama/

Set sumber utama

Kode sumber dan resource yang umum di semua varian build. Sumber ini bertindak sebagai dasar untuk semua build, dan set sumber lainnya yang lebih spesifik ditambahkan ke atau menggantikan sumber ini.

↳ java/

↳ kotlin/

Kode sumber Kotlin dan Java

Direktori java dapat berisi campuran kode sumber Java dan Kotlin. Jika subproject ini hanya berisi kode Kotlin, Anda dapat mengganti nama direktori ini kotlin.

Android
adalah platform yang mengutamakan Kotlin. Sumber Java didukung, tetapi API baru menargetkan bahasa Kotlin. Sebaiknya gunakan Kotlin untuk semua kode baru dan update besar pada kode yang sudah ada.

↳ resolusi/

File resource Android

Berisi resource aplikasi, seperti gambar dan file XML. Semua aplikasi menggunakan beberapa resource dasar, seperti ikon peluncur, tetapi banyak dari resource ini, seperti tata letak dan menu, hanya digunakan di aplikasi berbasis tampilan. Aplikasi Compose menggunakan resource String yang ditentukan dalam direktori ini.

↳ AndroidManifest.xml

Metadata aplikasi Android

Membaca oleh pengelola paket Android untuk memberi tahu sistem

  • komponen yang ditentukan oleh aplikasi
  • izin yang diperlukan
  • kompatibilitas perangkat
  • Pembatasan platform Android

↳ androidTest/

Pengujian perangkat set sumber

Berisi sumber untuk pengujian yang akan dijalankan pada emulator atau perangkat yang didukung Android. Pengujian ini memiliki akses ke lingkungan Android sesungguhnya, tetapi dijalankan lebih lambat daripada pengujian host.

Semua file sumber dalam set sumber main tersedia untuk digunakan oleh sumber di bagian androidTest.

↳ pengujian/

Pengujian host set sumber

Berisi sumber untuk pengujian yang dijalankan secara lokal di JVM, berbeda dengan pengujian yang berjalan di perangkat. Pengujian ini jauh lebih cepat dijalankan daripada pengujian perangkat. Namun, setiap panggilan sistem (termasuk siklus proses yang menjalankan aplikasi Anda) harus ditiru, dipalsukan, diberi stub, atau disimulasikan.

Semua file sumber dalam set sumber main tersedia untuk digunakan oleh sumber yang sedang diuji.

↳ proguard-rules.pro

Aturan konfigurasi R8

Menentukan aturan untuk mengontrol penyingkatan, pengoptimalan, dan obfuscation aplikasi. R8 menghapus kode dan resource yang tidak diperlukan, mengoptimalkan performa runtime, dan lebih meminimalkan kode Anda dengan mengganti nama ID.