Kata compilekunci Gradle tidak lagi digunakan karena kata kunci apidan implementationuntuk mengonfigurasi dependensi.
Menggunakan apisama dengan menggunakan deprecated compile, jadi jika Anda mengganti semua compiledengan apisemuanya akan berfungsi seperti biasa.
Untuk memahami implementationkata kunci, pertimbangkan contoh berikut.
CONTOH
Misalkan Anda memiliki perpustakaan yang dipanggil MyLibraryyang 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.gradlemenggunakan apikonfigurasi dependencies{}seperti ini:
dependencies {
api project(':InternalLibrary')
}
Anda ingin menggunakan MyLibrarydalam kode Anda sehingga di aplikasi build.gradleAnda , Anda menambahkan ketergantungan ini:
dependencies {
implementation project(':MyLibrary')
}
Menggunakan apikonfigurasi (atau tidak digunakan lagi compile) yang dapat Anda akses InternalLibrarydi kode aplikasi Anda:
MyLibrary myLib = new MyLibrary();
System.out.println(myLib.myString());
System.out.println(InternalLibrary.giveMeAString());
Dengan cara ini modul MyLibraryberpotensi "membocorkan" implementasi internal sesuatu. Anda tidak boleh (dapat) menggunakannya karena tidak langsung diimpor oleh Anda.
The implementationkonfigurasi diperkenalkan untuk mencegah hal ini. Jadi sekarang jika Anda menggunakan implementationalih-alih apidi 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 MyLibrarydan 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 compiledengan implementationkata 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 apiuntuk setiap dependensi yang diperlukan untuk API publik library Anda, sementara digunakan implementationuntuk 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