Gradle compile
anahtar kelimesi, bağımlılıkları yapılandırmak için api
ve implementation
anahtar kelimeleri lehine kullanımdan kaldırıldı .
Kullanılması api
kaldırılmış kullanmanın eşdeğerdir compile
tüm değiştirmek eğer öyleyse, compile
ile api
her şey olacak her zaman olduğu gibi çalışır.
implementation
Anahtar kelimeyi anlamak için aşağıdaki örneği inceleyin.
MİSAL
Diyelim MyLibrary
ki dahili olarak adlandırılan başka bir kitaplık kullanan bir kitaplığınız var InternalLibrary
. Bunun gibi bir şey:
// 'InternalLibrary' module
public class InternalLibrary {
public static String giveMeAString(){
return "hello";
}
}
// 'MyLibrary' module
public class MyLibrary {
public String myString(){
return InternalLibrary.giveMeAString();
}
}
Diyelim ki MyLibrary
build.gradle
kullanım api
konfigürasyonu dependencies{}
şöyle:
dependencies {
api project(':InternalLibrary')
}
MyLibrary
Kodunuzda kullanmak istiyorsunuz, böylece uygulamanızda build.gradle
bu bağımlılığı ekliyorsunuz:
dependencies {
implementation project(':MyLibrary')
}
Kullanılması api
konfigürasyonunu (ya kaldırılmış compile
erişebileceğiniz) InternalLibrary
uygulama kodunuzda:
// Access 'MyLibrary' (granted)
MyLibrary myLib = new MyLibrary();
System.out.println(myLib.myString());
// Can ALSO access the internal library too (and you shouldn't)
System.out.println(InternalLibrary.giveMeAString());
Bu şekilde modül MyLibrary
potansiyel olarak bir şeyin dahili uygulamasını "sızdırıyor". Bunu doğrudan kullanmanız gerekmediği için kullanmamalısınız (kullanamamalısınız).
Bunu implementation
önlemek için yapılandırma tanıtıldı. Yani şimdi in implementation
yerine kullanırsanız :api
MyLibrary
dependencies {
implementation project(':InternalLibrary')
}
InternalLibrary.giveMeAString()
artık uygulama kodunuzu arayamayacaksınız .
Boks stratejinin Bu tür Android Gradle içinde düzenleme şey olmadığını bilmek eklentisi verir InternalLibrary
, sadece bir recompilation tetiklemek gerekir MyLibrary
ve değil Erişiminizin olmadığı için, tüm uygulamanın recompilation InternalLibrary
.
Çok fazla iç içe bağımlılığınız olduğunda, bu mekanizma yapıyı çok hızlandırabilir. (Bunu tam olarak anlamak için sonunda bağlanan videoyu izleyin)
SONUÇLAR
Eğer 3.xx eklentisi Yeni Android Gradle geçtiğinizde, tüm değiştirmeniz gerekir compile
ile implementation
anahtar kelime (1 *) . Ardından uygulamanızı derlemeye ve test etmeye çalışın. Her şey yolundaysa, kodu olduğu gibi bırakın, sorunlarınız varsa muhtemelen bağımlılıklarınızda yanlış bir şeyiniz var veya şimdi özel ve daha erişilebilir olmayan bir şey kullandınız. Android Gradle eklentisi mühendisi Jerome Dochez (1 ) * ) tarafından öneri
Bir kütüphane yöneticisi iseniz , son kullanıcılar tarafından kullanılmaması gereken test bağımlılıkları veya bağımlılıkları için api
kullanırken, kitaplığınızın genel API'si için gereken her bağımlılık için kullanmalısınız implementation
.
Uygulama ve API arasındaki farkı gösteren faydalı makale
REFERANSLAR
(Bu, zamandan kazanmak için ayrılmış video ile aynıdır)
Google I / O 2017 - Gradle'ın hızlandırılması (TAM VİDEO)
Google I / O 2017 - Gradle'ı nasıl hızlandırır (SADECE YENİ GRADLE PLUGIN 3.0.0 BÖLÜMÜ)
Google I / O 2017 - Gradle'ın oluşturma hızını artırma ( 1 * referansı )
Android belgeleri