@Pavel Dudka
Jack - bir derleyicidir. Javac'a benzer, ancak biraz farklı bir şey yapar:
Gördüğünüz gibi Jack, Java kaynak kodunu doğrudan Dex dosyasına derliyor! Artık ara * .class dosyalarımız yok, bu yüzden dx aracına gerek yok!
Fakat bekle! Projeme bir üçüncü taraf kitaplığı eklersem (.class dosyalarından oluşan bir koleksiyon olarak gelir) ne olur?
İşte o zaman Jill devreye giriyor:
Jill, sınıf dosyalarını işleyebilir ve bunları Jack derleyicisi için girdi olarak kullanılabilecek özel Jayce biçimine dönüştürebilir.
Öyleyse şimdi biraz kenara çekilip düşünelim ... Bu kadar bağımlı olduğumuz tüm o harika eklentilere ne olacak? Hepsinin .class dosyalarına ihtiyacı var ve Jack derleyicisi artık bunlara sahip değil ...
Neyse ki Jack, bizim için önemli özelliklerden bazılarını kutudan çıkarıyor:
- Retrolambda - gerekli olmayacak. Jack lambdaları düzgün bir şekilde idare edebilir
- Proguard - şimdi Jack'e pişirildi, böylece gizlemeyi ve küçültmeyi kullanmaya devam edebilirsiniz
Avantajlar:
Jack, Java programlama dili 1.7'yi destekler ve aşağıda açıklanan ek özellikleri entegre eder.
Hazırlık
Bir JACK kitaplık dosyası oluştururken, kitaplığın .dex'i oluşturulur ve ön dex olarak .jack kitaplık dosyası içinde saklanır. JACK, derlerken her kitaplıktaki ön dex'i yeniden kullanır. Tüm kütüphaneler önceden tanımlanmıştır.
Artımlı derleme
Artımlı derleme, yalnızca son derlemeden bu yana dokunulan bileşenlerin ve bunların bağımlılıklarının yeniden derlendiği anlamına gelir. Artımlı derleme, değişiklikler yalnızca sınırlı bir bileşen kümesiyle sınırlı olduğunda tam derlemeden önemli ölçüde daha hızlı olabilir.
Yeniden paketleme
JACK, yeniden paketleme yapmak için jarjar yapılandırma dosyalarını kullanır.
Multidex desteği
Dex dosyaları 65.000 yöntemle sınırlı olduğundan, 65.000'den fazla yöntemi olan uygulamalar birden çok dex dosyasına bölünmelidir. (Multidex hakkında daha fazla bilgi için bkz. '65K'dan Fazla Yöntemle Uygulama Oluşturma'.)
Dezavantajları:
- Dönüştürme API'si Jack tarafından desteklenmez - değiştirebileceğiniz ara Java bayt kodu yoktur, bu nedenle burada bahsetmediğim bazı eklentiler çalışmayı durduracak
- Ek açıklama işleme şu anda Jack tarafından desteklenmemektedir, bu nedenle, Dagger, AutoValue, vb. Gibi kitaplıklara büyük ölçüde bağımlıysanız, Jack'e geçmeden önce iki kez düşünmelisiniz. DÜZENLEME: Jake Wharton tarafından belirtildiği gibi, Jack in N Preview ek açıklama işleme desteğine sahiptir, ancak henüz Gradle aracılığıyla gösterilmemiştir.
- Java bayt kodu seviyesinde çalışan lif detektörleri desteklenmez.
- Jacoco desteklenmiyor - ben şahsen Jacoco'yu şüpheli buluyorum (gerçekten görmek istediklerinizi göstermiyor), bu yüzden onsuz tamamen yaşayabilir
- Dexguard - Proguard'ın kurumsal sürümü şu anda desteklenmiyor