Kata compile
kunci Gradle tidak lagi digunakan karena kata kunci api
dan implementation
untuk mengonfigurasi dependensi.
Menggunakan api
sama dengan menggunakan deprecated compile
, jadi jika Anda mengganti semua compile
dengan api
semuanya akan berfungsi seperti biasa.
Untuk memahami implementation
kata kunci, pertimbangkan contoh berikut.
CONTOH
Misalkan Anda memiliki perpustakaan yang dipanggil MyLibrary
yang secara internal menggunakan perpustakaan lain yang disebut InternalLibrary
. Sesuatu seperti ini:
public class InternalLibrary {
public static String giveMeAString(){
return "hello";
}
}
public class MyLibrary {
public String myString(){
return InternalLibrary.giveMeAString();
}
}
Misalkan MyLibrary
build.gradle
menggunakan api
konfigurasi dependencies{}
seperti ini:
dependencies {
api project(':InternalLibrary')
}
Anda ingin menggunakan MyLibrary
dalam kode Anda sehingga di aplikasi build.gradle
Anda , Anda menambahkan ketergantungan ini:
dependencies {
implementation project(':MyLibrary')
}
Menggunakan api
konfigurasi (atau tidak digunakan lagi compile
) yang dapat Anda akses InternalLibrary
di kode aplikasi Anda:
MyLibrary myLib = new MyLibrary();
System.out.println(myLib.myString());
System.out.println(InternalLibrary.giveMeAString());
Dengan cara ini modul MyLibrary
berpotensi "membocorkan" implementasi internal sesuatu. Anda tidak boleh (dapat) menggunakannya karena tidak langsung diimpor oleh Anda.
The implementation
konfigurasi diperkenalkan untuk mencegah hal ini. Jadi sekarang jika Anda menggunakan implementation
alih-alih api
di MyLibrary
:
dependencies {
implementation project(':InternalLibrary')
}
Anda tidak akan dapat memanggil InternalLibrary.giveMeAString()
kode aplikasi Anda lagi.
Strategi tinju semacam ini memungkinkan plugin Android Gradle mengetahui bahwa jika Anda mengedit sesuatu InternalLibrary
, plugin tersebut hanya boleh memicu kompilasi ulang MyLibrary
dan bukan kompilasi ulang seluruh aplikasi Anda, karena Anda tidak memiliki akses ke InternalLibrary
.
Jika Anda memiliki banyak dependensi bersarang, mekanisme ini dapat mempercepat proses build. (Tonton video yang ditautkan di bagian akhir untuk pemahaman penuh tentang ini)
KESIMPULAN
Saat Anda beralih ke plugin Android Gradle 3.XX baru, Anda harus mengganti semua Anda compile
dengan implementation
kata kunci * (1 ) . Kemudian coba kompilasi dan uji aplikasi Anda. Jika semuanya tidak apa-apa biarkan kodenya apa adanya, jika Anda memiliki masalah, Anda mungkin memiliki sesuatu yang salah dengan dependensi Anda atau Anda menggunakan sesuatu yang sekarang bersifat pribadi dan tidak lebih mudah diakses. * Saran oleh insinyur plugin Android Gradle Jerome Dochez (1 ) )
Jika Anda adalah mantainer library, Anda harus menggunakan api
untuk setiap dependensi yang diperlukan untuk API publik library Anda, sementara digunakan implementation
untuk uji dependensi atau dependensi yang tidak boleh digunakan oleh pengguna akhir.
Artikel yang berguna Menampilkan perbedaan antara implementasi dan api
REFERENSI
(Ini adalah video yang sama yang dipisahkan untuk menghemat waktu)
Google I / O 2017 - Bagaimana mempercepat pembangunan Gradle (VIDEO LENGKAP)
Google I / O 2017 - Cara mempercepat pembuatan Gradle (NEW GRADLE PLUGIN 3.0.0 PART ONLY)
Google I / O 2017 - Cara mempercepat build Gradle (referensi ke 1 *)
Dokumentasi Android