Apa itu Gradle di Android Studio?

1314

Gradle agak membingungkan bagi saya, dan juga untuk setiap pengembang android baru. Adakah yang bisa menjelaskan apa itu Gradle di Android Studio dan apa tujuannya? Mengapa itu termasuk dalam Android Studio?

androidcodehunter
sumber
4
Lihat gradle.org
Eng.Fouad
14
Untuk menjawab mengapa Anda menginginkan alat bantu bangunan seperti Gradle, lihat pos ini dari Jeff Atwood.
Adam S
829
Ketika seseorang mengajukan pertanyaan di sini bahwa ya, memang memiliki banyak tautan di Google tentang hal itu, yang sebenarnya mereka tanyakan adalah seseorang untuk menjawab pertanyaan dengan bahasa sederhana dan memasukkannya ke dalam konteks , seperti mengapa kita membutuhkannya , siapa yang akan paling sering menggunakannya, apakah kita perlu mengetahuinya untuk membuat aplikasi Android di Android Studio, dll. Karena tautan yang Anda temukan di Google sering kali dalam "bahasa teknis" dan bagi pemula hal ini membingungkan.
Azurespot
3
@NoniA. Pikiranku persis. Saya masih sedikit bingung, apakah gradle hanya proses latar belakang yang mengkompilasi kode yang saya tulis? Juga, setelah melihat banyak jawaban lain, mereka menyebutkan dependensi. Apa itu? Terima kasih banyak!
Mungkin melihat penjelasan singkat dan bagus di sini Memperkenalkan gradle . Cukup membantu
eRaisedToX

Jawaban:

1532

Jawaban singkat

Gradle adalah sistem build.

Jawaban panjang

Sebelum Android Studio Anda menggunakan Eclipse untuk tujuan pengembangan Anda, dan, kemungkinan besar, Anda tidak tahu cara membangun APK Android tanpa Eclipse.

Anda dapat melakukan ini pada baris perintah, tetapi Anda harus mempelajari apa yang dilakukan oleh masing-masing alat (dx, aapt) di SDK. Eclipse menyelamatkan kita semua dari level rendah tapi penting, detail mendasar ini dengan memberi kita sistem build mereka sendiri.

Sekarang, pernahkah Anda bertanya-tanya mengapa resfolder tersebut berada di direktori yang sama dengan srcfolder Anda ?

Di sinilah sistem build memasuki gambar. Sistem build secara otomatis mengambil semua file sumber ( .javaatau .xml), lalu menerapkan alat yang sesuai (mis. Mengambil javafile kelas dan mengubahnya menjadi dexfile), dan mengelompokkan semuanya menjadi satu file terkompresi, APK kesayangan kami.

Sistem build ini menggunakan beberapa konvensi: contohnya adalah menentukan direktori yang berisi file sumber (di Eclipse itu \srcfolder) atau file sumber daya (di Eclipse itu \resfolder).

Sekarang, untuk mengotomatisasi semua tugas ini, harus ada skrip; Anda dapat menulis sistem build Anda sendiri menggunakan skrip shell di linux atau sintaks file batch di windows. Oke?

Gradle adalah sistem build lain yang mengambil fitur terbaik dari sistem build lain dan menggabungkannya menjadi satu. Itu diperbaiki berdasarkan dari kekurangan mereka. Ini adalah sistem build berbasis JVM , artinya Anda dapat menulis skrip sendiri di Jawa, yang digunakan oleh Android Studio.

Satu hal keren tentang gradle adalah bahwa itu adalah sistem berbasis plugin . Ini berarti jika Anda memiliki bahasa pemrograman Anda sendiri dan Anda ingin mengotomatiskan tugas membangun beberapa paket (output seperti JAR untuk Java) dari sumber maka Anda dapat menulis plugin lengkap di Java atau Groovy (atau Kotlin, lihat di sini ), dan mendistribusikannya ke seluruh dunia.

Mengapa Google menggunakannya?

Google melihat salah satu sistem build paling canggih di pasar dan menyadari bahwa Anda dapat menulis skrip Anda sendiri dengan sedikit atau tanpa kurva belajar, dan tanpa mempelajari Groovy atau bahasa baru lainnya. Jadi mereka menulis plugin Android untuk Gradle.

Anda harus melihat build.gradlefile di proyek Anda. Di situlah Anda dapat menulis skrip untuk mengotomatiskan tugas Anda. Kode yang Anda lihat dalam file ini adalah kode Groovy. Jika Anda menulis System.out.println("Hello Gradle!");maka itu akan dicetak di konsol Anda.

Apa yang dapat Anda lakukan dalam skrip pembuatan?

Contoh sederhana adalah bahwa Anda harus menyalin beberapa file dari satu direktori ke direktori lain sebelum proses pembangunan yang sebenarnya terjadi. Skrip pembangunan Gradle dapat melakukan ini.

Gagandeep Singh
sumber
11
Saya harus mengatakan bahwa Gradle memberi saya masalah ketika membawa proyek AndroidStudio dari satu lokasi ke lokasi lain. Ketidakcocokan versi, modul yang hilang, yang lainnya ... itu membuat saya kesulitan. Saya akhirnya menciptakan kembali kerangka proyek dan memotong / menempelkan bagian kode yang dari proyek lama ke yang baru. Dan ini di bawah Windows untuk sumber dan tujuan. Saya akan memindahkannya sekarang di bawah lab berbasis Linux.
jfmessier
22
Apa yang saya tidak mengerti adalah mengapa gradle mencoba terhubung ke Internet untuk setiap proyek yang saya buat atau bahkan setiap kali saya ingin mengkompilasi
AaA
4
Saya pikir IntelliJ sudah tahu bagaimana membangun proyek Android tanpa perlu sistem pembangunan lain.
Arne Evertsson
18
Keuntungan utama Gradle dibandingkan sistem build Android studio sebelumnya adalah manajemen ketergantungan. Sebelumnya untuk menggunakan perpustakaan Android dalam suatu proyek, seseorang harus mengunduh kode sumber, menambahkannya ke proyek Anda dan kompilasi dengan proyek Anda. Sebagai gantinya, dengan gradle satu dapat menambahkan satu baris ke build.gradle dan gradle kemudian akan mengunduh pustaka yang dikompilasi dari repositori publik dan menambahkannya ke proyek Anda. Beberapa contoh: blog.teamtreehouse.com/android-libraries-use-every-project Ini juga berfungsi untuk file jar Java standar alih-alih menempatkannya di direktori lib.
Stan Kurdziel
4
Gradle adalah sistem pembangunan yang mengerikan. Dalam menggunakan Android Studio, saya ingin merawatnya. Saya tidak mengerti mengapa menambahkan beberapa kelas memaksa Gradle untuk melakukan sinkronisasi sebelum dapat berguna. Bekerja dengan Visual Studio dengan perbandingan luar biasa (atau bahkan X-Code) - tidak perlu tambahan jelek. IDE membangun proyek dan solusi tanpa perlu mengotak-atik file acak untuk pengaturan yang diperlukan proses pembangunan Android di waktu atau melalui pembaruan proyek lama. Gradle adalah bagian terburuk dari pengalaman Android.
csmith
162

Ini alat bangun baru yang ingin digunakan Google untuk Android. Ini digunakan karena lebih fleksibel, dan berguna daripada semut. Ini dimaksudkan untuk meningkatkan pengalaman pengembang.

Anda dapat melihat ceramah oleh Xavier Ducrohet dari Tim Pengembang Android di Google I / O di sini.

Ada juga pembicaraan lain di Android Studio oleh Xavier dan Tor Norbye, juga selama Google I / O di sini .

daniel_c05
sumber
4
Saya pikir IntelliJ sudah tahu bagaimana membangun proyek Android tanpa perlu sistem pembangunan lain.
Arne Evertsson
1
Jadi, apakah gradle hanya proses latar belakang yang mengkompilasi kode yang saya tulis? Juga, setelah melihat banyak jawaban lain, mereka menyebutkan dependensi. Apa itu? Terima kasih banyak daniel!
2
@ user5562706 Ini tidak mengkompilasi kode, tetapi bertanggung jawab untuk memanggil yang dapat dieksekusi yang mengkompilasi kode Anda. Setelah mengkompilasi kode Anda, ia kemudian dapat menjalankan tugas lain untuk mengemasnya, yang lain untuk menyalinnya ke direktori yang Anda pilih, lalu mungkin yang lain untuk mengunggahnya ke server di suatu tempat ... Itu semacam tugas Gradle, atau bangunan apa pun sistem, akan dilakukan.
Michael Berry
63

Gradle adalah sistem build yang berjalan di Android Studio .

Dalam bahasa lain misalnya:

kenju
sumber
23
Ketika Anda mengatakan Gradlemirip dengan make, saya baru saja konsepnya
user3405291
3
PHING dari PHP
Yousha Aleayoub
15
Salah satu cara tercepat yang saya temukan untuk mempelajari apa yang dilakukan alat yang tidak dikenal dan di mana ia berada di dalam pipa, adalah dengan mengetikkan ke Google nama alat dan "vs". Hasilnya biasanya akan menunjukkan "X vs Y" di mana Y adalah beberapa alat lain yang mungkin lebih Anda kenal.
James Kuang
webpack untuk javascript
codepig
47

Berikut adalah penjelasan terperinci tentang apa Gradleitu dan bagaimana menggunakannya di Android Studio.

Menjelajahi File Gradle

  1. Setiap kali Anda membuat proyek di Android Studio, sistem build secara otomatis menghasilkan semua file build Gradle yang diperlukan.

Gradle Build Files

  1. Gradle build file menggunakan a Domain Specific Language or DSLuntuk mendefinisikan logika build kustom dan untuk berinteraksi dengan elemen khusus Android dari plugin Android untuk Gradle.

  2. Proyek Android Studio terdiri dari 1 modul atau lebih, yang merupakan komponen yang dapat Anda bangun, uji, dan debug secara mandiri. Setiap modul memiliki file build sendiri, sehingga setiap proyek Android Studio berisi 2 jenis file build Gradle.

  3. File Build Top-Level: Di sinilah Anda akan menemukan opsi konfigurasi yang umum untuk semua modul yang membentuk proyek Anda.

  4. Modul-Level Build File: Setiap modul memiliki file build Gradle sendiri yang berisi pengaturan build spesifik modul. Anda akan menghabiskan sebagian besar waktu mengedit file build tingkat modul daripada file build tingkat atas proyek Anda.

Untuk melihat build.gradlefile - file ini , buka panel Project Android Studio (dengan memilih tab Project) dan rentangkan folder Script Gradle. Dua item pertama dalam folder Script Gradle adalah file build level tingkat proyek dan modul

File Build Gradle Tingkat Atas

Setiap proyek Android Studio berisi satu, file build Gradle tingkat atas. build.gradleFile ini adalah item pertama yang muncul di folder Script Gradle dan ditandai dengan jelas Project.

Sebagian besar waktu, Anda tidak perlu melakukan perubahan apa pun pada file ini, tetapi masih bermanfaat untuk memahami kontennya dan perannya dalam proyek Anda.

Modul-Level Gradle Membuat File

Selain file build Gradle tingkat proyek, setiap modul memiliki file build Gradle sendiri. Di bawah ini adalah versi file file Gradle tingkat dasar yang beranotasi.

File Gradle Lainnya

Selain file build.gradle, folder Script Gradle Anda berisi beberapa file Gradle lainnya. Sebagian besar waktu Anda tidak perlu mengedit file-file ini secara manual karena mereka akan memperbarui secara otomatis ketika Anda membuat perubahan yang relevan dengan proyek Anda. Namun, itu ide yang baik untuk memahami peran file-file ini dalam proyek Anda.

gradle-wrapper.properties (Versi Gradle)

File ini memungkinkan orang lain untuk membuat kode Anda, bahkan jika mereka tidak menginstal Gradle di mesin mereka. File ini memeriksa apakah versi Gradle yang benar telah diinstal dan mengunduh versi yang diperlukan jika perlu.

settings.gradle

File ini referensi semua modul yang membentuk proyek Anda.

gradle.properties (Properti Proyek)

File ini berisi informasi konfigurasi untuk seluruh proyek Anda. Ini kosong secara default, tetapi Anda dapat menerapkan berbagai properti untuk proyek Anda dengan menambahkannya ke file ini.

local.properties (Lokasi SDK)

File ini memberi tahu plugin Android Gradle di mana ia dapat menemukan instalasi Android SDK Anda.

Catatan: local.properties berisi informasi yang khusus untuk pemasangan Android SDK lokal. Ini berarti Anda tidak boleh menyimpan file ini di bawah kendali sumber.

Bacaan yang disarankan - Tutorial Tutsplus

Saya mendapat pemahaman yang jelas tentang gradle dari ini.

Parmeshwar C
sumber
1
Perhatikan bahwa jawaban hanya tautan tidak disarankan, jawaban SO harus menjadi titik akhir dari pencarian solusi (vs. persinggahan referensi lainnya, yang cenderung menjadi basi dari waktu ke waktu). Harap pertimbangkan untuk menambahkan sinopsis mandiri di sini, dengan menjaga tautan sebagai referensi.
kleopatra
30

Gradle adalah salah satu jenis alat bangun yang membangun kode sumber program. Jadi ini adalah bagian penting dari Android Studio, dan perlu diinstal sebelum mulai mengembangkan aplikasi Anda.

Kita tidak harus menginstalnya secara terpisah, karena Android Studio melakukannya untuk kita, ketika kita membuat proyek pertama kita.

karan
sumber
4
Apa yang Anda maksud dengan membangun kode sumber program? Bukankah itu pekerjaan pengembang?
berkomitmenandroid
Jawaban ini benar-benar salah dalam cara mengucapkannya. Gradle adalah alat pengemasan yang dibundel dengan Android Studio, jadi yang dibutuhkan adalah membangun apk. Kode sumber selalu dibangun oleh kompiler dan tidak ada yang lain.
AutomEng
Namun dari pertanyaan lain, sepertinya Gradle tidak akan berfungsi dengan baik tanpa koneksi internet yang andal, apakah ini berarti saya harus membuang Android Studio sampai itu diperbaiki?
Michael
2
@committedandroider: tugas pengembang adalah menulis kode sumber, bukan membangunnya . Dalam sistem developement kita menggunakan kata "Build" berarti proses kemasan yang dikompilasi kode sumber menjadi akhir produk (a paket atau executable )
MestreLion
1
@MestreLion lol saya cukup bingung saat itu karena orang menggunakan 'membangun' dalam referensi untuk menulis kode sumber untuk kegiatan konsultansi mereka i dibangun chatting server ini, aplikasi ini untuk ...
committedandroider
26

DEFINISI :: Gradle dapat diuraikan sebagai mekanisme bangunan terstruktur di mana ia menyediakan alat dan fleksibilitas kepada pengembang untuk mengelola sumber daya proyek untuk membuat bangunan yang smaller in size, targeting specific requirementsuntuk perangkat tertentu dengan konfigurasi tertentu


KONFIGURASI DASAR

  1. minimumSdk
  2. maximumSdk
  3. targettedSdk
  4. versionCode
  5. versionName

PERPUSTAKAAN: Kami dapat menambahkan perpustakaan android atau perpustakaan pihak ketiga lainnya selain sesuai persyaratan yang merupakan tugas yang membosankan sebelumnya. Jika perpustakaan tidak cocok untuk proyek yang ada, Pengembang ditunjukkan log di mana orang tersebut dapat menemukan solusi yang tepat untuk membuat perubahan pada proyek sehingga perpustakaan dapat ditambahkan. Hanya satu garis ketergantungan


VARIETAS PEMBANGUNAN BANGUNAN

Menggabungkan tipe build dengan varian build untuk mendapatkan variasi varian build

 ====================                         ====================
|     BuildTypes     |                       |   ProductFlavours  |
 --------------------  ====================== --------------------
|  Debug,Production  |      ||       ||      | Paid,Free,Demo,Mock|
 ====================       ||       ||       ==================== 
                            ||       ||
                            VV       VV
 =================================================================
|           DebugPaid, DebugFree, DebugDemo, DebugMock            |
|  ProductionPaid, ProductionFree, ProductionDemo, ProductionMock |
 =================================================================

MENGURANGI UKURAN

Gradle membantu mengurangi ukuran bangunan yang dihasilkan dengan menghapus sumber daya yang tidak terpakai juga hal-hal yang tidak terpakai dari perpustakaan terintegrasi


MENGATUR IZIN

Kami dapat Menentukan izin tertentu untuk bangunan tertentu dengan menambahkan izin tertentu dalam skenario tertentu berdasarkan persyaratan


BANGUN UNTUK PERANGKAT TERTENTU

Kami dapat mengelola pembuatan pembangkit untuk perangkat tertentu yang mencakup kepadatan tertentu dan level api tertentu. Ini membantu dalam penyebaran produk di app store sesuai dengan persyaratan di berbagai jenis perangkat


REFERENSI YANG BAIK

Tutorial Vogella

Setan
sumber
25

Anda dapat menemukan semua yang perlu Anda ketahui tentang Gradle di sini: Panduan Pengguna Plugin Gradle

Tujuan Sistem Bangun baru

Tujuan dari sistem pembangunan baru adalah:

  • Memudahkan untuk menggunakan kembali kode dan sumber daya
  • Buatlah mudah untuk membuat beberapa varian aplikasi, baik untuk distribusi multi-apk atau untuk berbagai rasa aplikasi
  • Memudahkan untuk mengonfigurasi, memperluas, dan menyesuaikan proses pembuatan
  • Integrasi IDE yang baik

Mengapa Gradle?

Gradle adalah sistem build tingkat lanjut serta toolkit build lanjutan yang memungkinkan untuk membuat logika build kustom melalui plugin.

Berikut adalah beberapa fitur yang membuat kami memilih Gradle:

  • Domain Specific Language (DSL) untuk menggambarkan dan memanipulasi logika build
  • Membangun file berbasis Groovy dan memungkinkan pencampuran elemen deklaratif melalui DSL dan menggunakan kode untuk memanipulasi elemen DSL untuk memberikan logika khusus.
  • Manajemen ketergantungan bawaan melalui Maven dan / atau Ivy.
  • Sangat fleksibel. Mengizinkan menggunakan praktik terbaik tetapi tidak memaksakan caranya sendiri dalam melakukan sesuatu.
  • Plugin dapat mengekspos DSL mereka sendiri dan API mereka sendiri untuk membangun file untuk digunakan.
  • API Perkakas yang Baik memungkinkan integrasi IDE
Mahdi Rashidi
sumber
25

Saya merujuk dua tutorial untuk menulis Jawaban satu , dua

Gradle adalah tujuan umum, alat bantu deklaratif. Ini adalah tujuan umum karena dapat digunakan untuk membangun hampir semua hal yang Anda inginkan untuk diterapkan dalam skrip build. Ini bersifat deklaratif karena Anda tidak ingin melihat banyak kode dalam file build, yang tidak dapat dibaca dan kurang dapat dikelola. Jadi, sementara Gradle memberikan gagasan tentang konvensi dan bangunan sederhana dan deklaratif, itu juga membuat alat tersebut dapat diadaptasi dan kemampuan pengembang untuk memperluas. Ini juga menyediakan cara mudah untuk menyesuaikan perilaku default dan berbagai kait untuk menambahkan fitur pihak ketiga.

Gradle menggabungkan bagian-bagian yang bagus dari kedua alat dan menyediakan fitur tambahan dan menggunakan Groovy sebagai Domain Specific Language (DSL). Ini memiliki kekuatan dan fleksibilitas alat Ant dengan fitur Maven seperti membangun siklus hidup dan kemudahan penggunaan.

Mengapa Gradle? Kenapa sekarang?

Respons build tool adalah menambahkan fungsionalitas scripting melalui mekanisme ekstensi yang tidak standar. Anda akhirnya mencampur kode skrip dengan XML atau menggunakan skrip eksternal dari logika build Anda. Sangat mudah untuk membayangkan bahwa Anda harus menambahkan lebih banyak kode kustom seiring waktu. Sebagai hasilnya, Anda pasti memperkenalkan kerumitan yang tidak disengaja, dan pemeliharaan dapat dilakukan.

Katakanlah Anda ingin menyalin file ke lokasi tertentu ketika Anda sedang membangun versi rilis proyek Anda. Untuk mengidentifikasi versi, Anda memeriksa string dalam metadata yang menggambarkan proyek Anda. Jika cocok dengan skema penomoran tertentu (misalnya, 1.0-RELEASE), Anda menyalin file dari titik A ke titik B. Dari perspektif luar, ini mungkin terdengar seperti tugas sepele. Jika Anda harus mengandalkan XML, bahasa build dari banyak alat tradisional, mengekspresikan logika sederhana ini menjadi cukup sulit.

Evolusi Java Build Tools

Logika Java build harus dijelaskan dalam XML. XML sangat bagus untuk menggambarkan data hierarkis tetapi gagal mengekspresikan aliran program dan logika kondisional. Saat skrip build berkembang dalam kompleksitas, mempertahankan kode bangunan menjadi mimpi buruk.

Di Ant , Anda membuat target JAR bergantung pada target kompilasi. Semut tidak memberikan panduan tentang cara menyusun proyek Anda. Meskipun memungkinkan fleksibilitas maksimum, Ant membuat setiap skrip pembuatan unik dan sulit dipahami. Pustaka eksternal yang dibutuhkan oleh proyek Anda biasanya diperiksa ke dalam kontrol versi karena tidak ada mekanisme otomatis untuk menariknya dari lokasi pusat.

Maven 1 , dirilis pada Juli 2004, mencoba meringankan proses itu. Ini memberikan proyek standar dan struktur direktori, serta manajemen ketergantungan. Sayangnya, logika khusus sulit diterapkan

Gradle sangat cocok dengan generasi alat bangun tersebut dan memenuhi banyak persyaratan alat bangun modern (Gambar 1). Ini memberikan DSL ekspresif, konvensi pendekatan konfigurasi, dan manajemen ketergantungan yang kuat. Itu membuat langkah yang tepat untuk meninggalkan XML dan memperkenalkan bahasa dinamis Groovy untuk mendefinisikan logika build Anda. Kedengarannya menarik, bukan?

Gradle menggabungkan fitur terbaik dari alat bangunan lain.

masukkan deskripsi gambar di sini

Set Fitur Menarik Gradle

masukkan deskripsi gambar di sini

Mengapa Membangun Proyek Java Anda dengan Gradle Daripada Semut atau Maven?

Alat bantu bawaan untuk Android (dan bintang baru alat bantu di JVM) dirancang untuk memudahkan pembuatan skrip dari perangkat multi-bahasa yang kompleks. Namun, haruskah Anda mengubahnya jika Anda menggunakan Ant atau Maven?

Kunci untuk membuka fitur daya Gradle dalam skrip build Anda terletak pada menemukan dan menerapkan model domainnya, seperti yang ditunjukkan pada gambar di bawah ini. masukkan deskripsi gambar di sini

Gradle tidak dapat mengetahui semua persyaratan khusus untuk membangun perusahaan Anda. Dengan memaparkan kait ke fase siklus hidup, Gradle memungkinkan untuk memantau dan mengonfigurasi perilaku eksekusi skrip build.

Gradle menetapkan kosakata untuk modelnya dengan mengekspos DSL yang diimplementasikan di Groovy. Ketika berhadapan dengan domain masalah yang kompleks, dalam hal ini, tugas membangun perangkat lunak, bisa menggunakan bahasa umum untuk mengekspresikan logika Anda bisa menjadi alat yang ampuh.

Contoh lain adalah cara Anda dapat mengekspresikan dependensi ke pustaka eksternal, masalah yang sangat umum diselesaikan dengan alat bantu pembangunan. Gradle yang out-of-the-box memberi Anda dua blok konfigurasi untuk skrip build Anda yang memungkinkan Anda untuk menentukan dependensi dan repositori tempat Anda ingin mengambilnya. Jika elemen DSL standar tidak sesuai dengan kebutuhan Anda, Anda bahkan dapat memperkenalkan kosakata Anda sendiri melalui mekanisme ekstensi Gradle.

Integrasi dengan Alat Bangun Lainnya

Gradle bermain bagus dengan Ant, Maven, dan Ivy pendahulunya, seperti yang ditunjukkan pada gambar di bawah.

masukkan deskripsi gambar di sini

Mengotomatiskan Proyek Anda dari Bangun ke Penempatan

masukkan deskripsi gambar di sini

Dalam gambar: Tahapan pipa penyebaran.

  • Kompilasi kodenya

  • Menjalankan unit dan tes integrasi

  • Melakukan analisis kode statis dan menghasilkan cakupan uji

  • Menciptakan distribusi

  • Menyediakan lingkungan target

  • Menerapkan kiriman

  • Melakukan tes asap dan fungsional otomatis

Saya merujuk dua tutorial untuk menulis Jawaban satu , dua

Farhana
sumber
1
Selain itu, Anda dapat membangun aplikasi Android dari baris perintah di mesin Anda atau di mesin di mana Android Studio tidak diinstal (seperti server integrasi berkelanjutan).
jettimadhuChowdary
23

Gradle adalah sistem build . Membangun sistem adalah alat perangkat lunak yang dirancang untuk mengotomatiskan proses kompilasi program. Membangun sistem datang dalam berbagai bentuk, dan digunakan untuk berbagai tugas membangun perangkat lunak. Sedangkan tujuan utama mereka adalah untuk secara efisien membuat executables.

Istilah lain yang terkait adalah Build automation yang merupakan proses mengotomatisasi pembuatan build perangkat lunak dan proses terkait termasuk: mengkompilasi kode sumber komputer ke dalam kode biner, mengemas kode biner, dan menjalankan pengujian otomatis.

Beberapa sistem build serupa untuk bahasa lain adalah (lihat daftar lengkap di sini ):

  1. Apache Ant & Apache Maven - Jawa
  2. sbt (Simple Build Tool) - untuk Scala (Play framework dll)
  3. AAP - alat bangun berbasis Python
  4. Rake (Apache Builder) - Ruby
  5. Leiningen untuk Clojure

sumber
17

Dengan risiko menjadi diskursif saya pikir di balik ini adalah pertanyaan mengapa pengalaman Android Studio / Gradle begitu buruk.

Pengalaman Clojure yang khas:

  • unduh proyek dengan dependensi yang tercantum di project.clj.
  • Leiningen mendapatkan dependensi berkat Clojars dan Maven.
  • Kompilasi proyek.

Pengalaman khas Android Studio / Gradle:

  • "Impor proyek Eclipse saya".
  • Proyek OK diimpor.
  • Gradle melakukan itu thang ... tunggu ... tunggu ... tunggu ... Gradle telah selesai.
  • Kompilasi ... tidak dapat mengkompilasi karena saya tidak tahu apa itu X / tidak dapat menemukan perpustakaan Y.

Saya tidak yakin ini adalah kesalahan Gradle sebenarnya. Tetapi "impor dari proyek Eclipse" tampaknya cukup tidak jelas. Untuk semua kecanggihan yang diduga Gradle dan keunggulan sistem build, Android Studio sepertinya tidak mengimpor dependensi build atau proses build dari Eclipse dengan sangat baik.

Itu tidak memberi tahu Anda ketika itu gagal mengimpor grafik ketergantungan lengkap. Android Studio tidak memberikan bantuan atau kiat bermanfaat tentang cara mengatasi masalah. Itu tidak memberi tahu Anda di mana Anda dapat melihat secara manual di folder Eclipse. Itu tidak memberi tahu Anda perpustakaan mana yang tampaknya hilang. Atau membantu Anda mencari Maven dll. Untuk mereka.

Pada 2016, hal-hal seperti Leiningen / Clojars, atau npm node, atau pip Python, atau Debian apkg (dan saya yakin banyak manajer paket yang serupa untuk bahasa dan sistem lain) semuanya bekerja dengan baik ... dependensi yang hilang adalah sesuatu dari masa lalu.

Kecuali dengan Android. Android Studio sekarang adalah satu-satunya tempat di mana saya masih merasakan neraka yang hilang ketergantungan.

Saya cenderung mengatakan ini adalah kesalahan Google. Mereka merusak ekosistem Android (dan ribuan proyek Android yang ada / tutorial online) ketika mereka dengan berani memutuskan untuk beralih dari Eclipse ke Android Studio / Gradle tanpa menghasilkan proses konversi yang kuat. Orang yang proyeknya bekerja di Eclipse tidak mengadaptasinya ke AS (mungkin karena itu menyulitkan mereka). Dan orang-orang yang mencoba menggunakan proyek-proyek itu di AS sedang menghadapi masalah yang sama.

Lagi pula, jika Gradle adalah sistem build yang sangat kuat ini, mengapa saya masih mengelola banyak dependensi lain dalam sdk manager? Mengapa tidak bisa proyek yang membutuhkan, katakanlah, ndk menentukan ini dalam file Gradle-nya sehingga akan terinstal dan dibangun secara otomatis ketika diperlukan? Mengapa NDK spesial? Demikian pula untuk platform target? Mengapa saya menginstalnya secara eksplisit di IDE daripada hanya memeriksa proyek saya terhadap mereka dan semua ini diurutkan untuk saya di belakang layar?

interstar
sumber
4
Saya sepenuhnya setuju bahwa Gradle adalah sistem pembangunan yang mengerikan. Ini adalah komponen yang membuat Android Studio jauh lebih buruk daripada X-Code atau Visual Studio. Saya menyadari ini harus "membangun" sistem di belakang layar tapi saya tidak benar-benar perlu tahu / peduli / mengotak-atik internal mereka. Gradle di sisi lain tampaknya putus dengan setiap pembaruan Android Studio dan rawa sistem bahkan hanya menambahkan kelas. Tidak ada IDE lain yang melakukan itu.
csmith
14

Gradle adalah sistem build lanjutan serta tool build lanjutan yang memungkinkan untuk membuat logika build kustom melalui plugin!

Keuntungan:

  • Dsl - Bahasa khusus domain, berdasarkan asyik
  • DAG - Grafik Asiklik yang Diarahkan
  • Membangun bertahap
  • Model domain yang dapat diperpanjang
  • Gradle selalu mutakhir
  • Sebelum tugas dijalankan, Gradle mengambil snapshot dari input dan output tugasnya.
  • Jika snapshot telah berubah atau tidak ada, Gralde akan menjalankan kembali tugas ini.

Manifes entri

Melalui DSL dimungkinkan untuk mengkonfigurasi entri manifes berikut:

Membangun varian

Secara default, plugin Android secara otomatis mengatur proyek untuk membangun versi debug dan versi rilis aplikasi.

Ketergantungan

  1. Ketergantungan Lokal:

Jika Anda memiliki arsip biner di sistem file lokal tempat modul bergantung, seperti file JAR, Anda bisa mendeklarasikan dependensi ini dalam file build untuk modul itu.

  1. Dependensi Jauh:

Pertama repositori harus ditambahkan ke daftar, dan kemudian ketergantungan harus dideklarasikan dengan cara yang Maven atau Ivy mendeklarasikan artefak mereka.

SKallmann
sumber
13

Gradle adalah ke bahasa JVM Groovy apa semut untuk Jawa. Pada dasarnya, ini alat bangun Groovy. Tidak seperti Ant, ini didasarkan pada bahasa Groovy lengkap. Anda dapat, misalnya, menulis kode skrip Groovy di skrip Gradle untuk melakukan sesuatu daripada mengandalkan bahasa domain tertentu.

Saya tidak tahu integrasi spesifik IntelliJ, tetapi bayangkan Anda bisa "memperluas" Groovy sehingga Anda bisa menulis primitif bahasa "build" spesifik dan mereka hanya menjadi bagian dari bahasa Groovy. (Programming pemrograman Groovy adalah seluruh diskusi untuk dirinya sendiri.) IntelliJ / Google dapat menggunakan Gradle untuk membangun bahasa build tingkat sangat tinggi, namun, itu adalah bahasa yang dibangun di atas standar terbuka yang dapat diperluas.

pengguna500123
sumber
2
itu bukan "Groovys build tool" - ini adalah alat serbaguna yang DSL-nya dibangun di atas groovy
martyglaubitz
10

Gradle adalah toolkit build lanjutan untuk android yang mengelola dependensi dan memungkinkan Anda untuk mendefinisikan logika build kustom. fitur-fiturnya seperti

  • Kustomisasi, konfigurasikan, dan perpanjang proses pembuatan.

  • Buat beberapa APK untuk aplikasi Anda dengan fitur berbeda menggunakan proyek yang sama.

  • Gunakan kembali kode dan sumber daya.

lihat

Dan mesin
sumber
9

Gradle adalah toolkit bangunan otomatis yang dapat diintegrasikan ke banyak lingkungan berbeda tidak hanya untuk proyek Android.

Berikut adalah beberapa hal yang dapat Anda lakukan dengan gradle.

  • Konfigurasi Minimal Diperlukan untuk Proyek Baru karena Gradle memiliki konfigurasi default untuk proyek studio android Anda.

  • Deklarasi Ketergantungan. Anda dapat mendeklarasikan file jar ketergantungan atau file perpustakaan yang di-host di server lokal atau jauh.

  • Gradle secara otomatis membuat direktori pengujian dan APK uji dari sumber proyek Anda.

  • Jika Anda menambahkan semua informasi yang diperlukan, seperti keyPassworddan keyAlias, ke file Gradle build Anda, Anda dapat menggunakan Gradle untuk menghasilkan APK yang ditandatangani.

  • Gradle dapat menghasilkan banyak APK dengan paket berbeda dan membangun konfigurasi dari satu modul.

Zumry Mohamed
sumber
8

Di Android Studio, Gradle adalah alat build kustom yang digunakan untuk membangun paket android (file apk) dengan mengelola dependensi dan menyediakan logika build kustom.

File APK (paket Aplikasi Android) adalah file zip yang diformat khusus yang berisi

  • Kode byte
  • Sumber daya (gambar, UI, xml dll)
  • File manifes

File apk ditandatangani dan didorong ke perangkat menggunakan ADB (Android Debug Bridge) di mana ia dieksekusi.

Akash Chandwani
sumber
6

Gradle adalah alat bantu bangun dan digunakan untuk membangun APK atau dikenal sebagai paket aplikasi kit.

Samarth Shah
sumber
4

oleh @Brian Gardner:

Gradle adalah alat pengembangan yang luas dan manajer dependensi untuk proyek pemrograman. Ini memiliki bahasa khusus domain berdasarkan Groovy. Gradle juga menyediakan dukungan build-by-convention untuk banyak jenis proyek termasuk Java, Android dan Scala.

Fitur Gradle:

  1. Manajemen Ketergantungan
  2. Menggunakan Semut dari Gradle
  3. Plugin Gradle
  4. Plugin Java
  5. Plugin Android
  6. Pembangunan Multi-Proyek
Dhaval Jivani
sumber
3

Gradle adalah apa yang memungkinkan untuk mengotomatisasi pembangunan proyek-proyek Android yang kompleks yang melibatkan 10s dari ribuan baris kode dari berbagai sumber, proyek, perpustakaan, dll. Dapat secara kondisional menghasilkan beberapa APK yang dioptimalkan berdasarkan pada sejumlah besar spesifikasi konfigurasi - jika Anda tertarik, jawaban lain memberikan rincian lebih lanjut tentang aspek Gradle ini.

Namun, jika Anda baru mengenal pengembangan Android, Gradle dalam 99% kasus adalah hal yang menghentikan proyek Anda untuk dibangun. Ini adalah sistem yang rumit dan tidak dapat dipahami, yang secara efektif mengaburkan proses pembuatan Android dan pada dasarnya membuatnya tidak tersedia untuk pengembang yang tidak berpengalaman, yaitu untuk membangun aplikasi Android level pemula, pemula yang tidak curiga mungkin perlu mempelajari dan memahami banyak hal yang tidak mereka tawar-menawar. seperti:

  • Struktur dan ekosistem Android APK
  • Android Studio
  • Java Classpath dan dependensi
  • Asyik
  • Skrip pembuatan gradle
  • Banyak teknologi kompleks dan menarik lainnya

Semua hal ini menarik dan berguna untuk diketahui oleh pengembang Android, tetapi mereka jauh dari mudah dan menghadirkan penghalang yang sulit untuk masuk. Saya menduga bahwa apa yang mengilhami OP untuk mengajukan pertanyaan ini adalah perasaan frustrasi yang tak terhindarkan menghantam pengembang baru setelah menghabiskan waktu terlalu lama mencoba untuk mendapatkan aplikasi sederhana untuk dibangun dan terus-menerus digagalkan oleh Gradle. Masalahnya diperburuk oleh banyaknya dokumentasi yang sangat teknis yang tersedia untuk semua teknologi ini. Juga untuk sejumlah besar kebutuhan pengembangan Gradle terlalu banyak.

Alternatifnya adalah menulis skrip shell yang membangun proyek Anda dengan mengotomatisasi alat yang tersedia di SDK android. Keutamaan pendekatan ini banyak, sebagai permulaan mungkin cara terbaik untuk mempelajari dan memahami proses pembangunan dan ekosistem Android, dan memungkinkan Anda untuk sepenuhnya mengontrol bagaimana aplikasi Anda dibangun. Namun pendekatan ini lebih cocok untuk tech-head yang sangat tidak dapat ditawar daripada untuk pemula yang tidak berpengalaman mencoba android.

Apa yang mencolok dengan ketidakhadirannya (tolong beri tahu saya jika ada hal seperti itu) adalah entry level, IDE ringan dengan set fitur yang diperkecil yang secara simultan menyederhanakan proses build sambil tidak mengaburkannya (jadi bukan netbeans atau gerhana) mungkin masih ada gunakan Gradle (apa yang salah dengan Ant). Seharusnya membuatnya mudah untuk menghasilkan APK yang sesuai dengan beberapa konfigurasi umum dan menggunakan struktur proyek yang dapat berkembang menjadi proyek Android Studio lengkap jika Anda memutuskan untuk melakukannya.

flurbius
sumber
1

Secara sederhana, Gradle adalah alat yang disediakan oleh Android Studio untuk mengimplementasikan dua proses penting:

  1. Bangun proyek kami
  2. Paket AndroidManifest.xml, folder res, dan kode biner ke dalam file zip yang diformat khusus yang disebut APK
S.Voulgaris
sumber
1

Hasil Pencarian Cuplikan unggulan dari web Android | membangun. gradle. Gradle adalah sistem build (open source) yang digunakan untuk mengotomatisasi bangunan, pengujian, penyebaran, dll. ... Misalnya, tugas sederhana untuk menyalin beberapa file dari satu direktori ke direktori lain dapat dilakukan oleh skrip pembangunan Gradle sebelum pembuatan aktual proses terjadi.

ali mazaheri
sumber
1

Di Android Studio, Gradle digunakan untuk membangun proyek aplikasi android kami, karenanya memainkan peran sistem bangun. Sebelum Android Studio, di Eclipse kami biasa mengkompilasi dan membangun aplikasi menggunakan alat baris perintah yang segera diambil alih oleh langkah-langkah berbasis GUI untuk membangun dan menjalankan Aplikasi Android dalam eclipse menggunakan ANT. Setiap alat pengembangan aplikasi android harus mengkompilasi sumber daya, kode sumber java, perpustakaan eksternal dan menggabungkannya menjadi APK final.

Gradle adalah sistem build, yang bertanggung jawab untuk kompilasi kode, pengujian, penyebaran dan konversi kode ke file .dex dan karenanya menjalankan aplikasi pada perangkat.

Karena Android Studio dilengkapi dengan sistem Gradle yang sudah diinstal sebelumnya, tidak perlu menginstal perangkat lunak runtime tambahan untuk membangun proyek kami. Setiap kali Anda mengklik Laritombol di studio android, tugas gradle secara otomatis memicu dan mulai membangun proyek dan setelah gradle menyelesaikan tugasnya, aplikasi mulai berjalan dalam AVD atau di perangkat yang terhubung.

Sistem build seperti Gradle bukan kompiler, tautan, dll., Tetapi mengontrol dan mengawasi operasi kompilasi, menghubungkan file, menjalankan test case, dan akhirnya menggabungkan kode ke file apk untuk Aplikasi Android Anda.

Ada dua file build.gradle untuk setiap proyek studio android di antaranya, satu untuk aplikasi dan lainnya untuk file proyek tingkat tingkat (modul) .

Dalam proses pembuatan, kompiler mengambil kode sumber, sumber daya, pustaka eksternal file JAR dan AndroidManifest.xml (yang berisi meta-data tentang aplikasi) dan mengonversinya menjadi file .dex (file Dalvik Executable file) , yang termasuk bytecode . Bytecode itu didukung oleh semua perangkat android untuk menjalankan aplikasi Anda. Kemudian APK Manager menggabungkan file .dex dan semua sumber daya lainnya menjadi file apk tunggal. APK Packager menandatangani debug atau rilis apk menggunakan debug masing-masing atau lepaskan keystore.

Debug apk umumnya digunakan untuk tujuan pengujian atau kita dapat mengatakan bahwa itu digunakan pada tahap pengembangan saja. Ketika aplikasi Anda lengkap dengan fitur yang diinginkan dan Anda siap untuk mempublikasikan aplikasi Anda untuk penggunaan eksternal maka Anda memerlukan Rilis apk yang ditandatangani menggunakan rilis keystore.

Sekarang mari kita beri sedikit cahaya pada file gradle.

setting.gradle File setting.gradle (pengaturan Gradle) digunakan untuk menentukan semua modul yang digunakan di aplikasi Anda.

build.gradle (level proyek) File build.gradle Level atas (modul) adalah file build level proyek, yang mendefinisikan konfigurasi build di level proyek. File ini menerapkan konfigurasi untuk semua modul dalam proyek aplikasi android.

build.gradle (level aplikasi) File build.gradle level Aplikasi terletak di setiap modul proyek android. File ini termasuk nama paket Anda sebagai applicationID, nama versi (versi apk), kode versi, minimum dan target SDK untuk modul aplikasi tertentu. Ketika Anda termasuk perpustakaan eksternal (bukan file jar) maka Anda perlu menyebutkannya dalam file tingkat tingkat aplikasi untuk memasukkannya dalam proyek Anda sebagai dependensi aplikasi.

Catatan: Jika aplikasi tertentu dikembangkan dalam variasi untuk modul individual seperti, Ponsel Pintar, Tablet atau TV maka file gradle yang terpisah harus dibuat untuk semua. Anda bahkan dapat memulai sistem gradle Anda melalui alat baris perintah . Perintah berikut digunakan untuk itu:

./gradlew build - (build project)
./gradlew clean build - (build project complete scratch)
./gradlew clean build - (jalankan tes)
./gradlew wrapper - (untuk melihat semua tugas yang tersedia)

Supriya
sumber
0

Gradle = Groovy + Cradle Hans Dockter komentar forum

Kebingungan agak tidak perlu ketika bisa saja disebut "Build" atau sesuatu di Android Studio.

Kami suka membuat hal-hal sulit bagi diri kita sendiri dalam komunitas Pembangunan.

James_UK_DEV
sumber