Jetpack Compose Projesinde Bağımlılık Güncellemelerini Otomatikleştirme

Kaan Enes KAPICI
IBTech
Published in
3 min readMar 18

--

Android Developers

Daha fazla özellik ve hata düzeltmesi içerdiklerinden, Android projelerde en son kütüphanelerin kullanılması önerilir. Bununla birlikte, özellikle aynı anda birden fazlasını düzeltmeye çalışıyorsak, sürümleri ve bozulan değişiklikleri düzeltmek karmaşık bir süreç olabilir. Bu işlemin otomatikleştirilmesi hataları azaltır ancak Compose kullanıyorsak projelerimizde dikkate almanız gereken bazı hususlar vardır.

Otomasyon ile bakım için harcanan zamanı azaltın

Bakım, nankör bir görev gibi görünebileceğinden, aşağıdakileri yaparak mümkün olduğunca çoğunu otomatikleştirmeye çalışmalısınız:

  • Kodun sürekli sağlıklı durumda olmasını sağlamak için Sürekli Entegrasyon(CI) sistemine sahip olmak.
  • Ekibinize uygulamanın değişikliklerden sonra nasıl davrandığına dair hızlı geri bildirim vermek ve gerilemeleri yakalamak için otomatik testler çalıştırma.
  • Bu yazının konusu olan güncellemelerin oluşturulmasını otomatikleştirmek.

Sürümleri çarpmak, genellikle bağımlılıklarınızı veya sürümlerini tanımladığınız derleme dosyasını açmak ve ardından hangisini kullanmanız gerektiğini bulmak için Google’ın Maven deposuna veya Maven Central’a gitmek anlamına gelir. Genellikle :

  • Bir kitaplığın kararlı bir sürümünü kullanıyorsanız, genellikle en son kararlı sürüme geçersiniz (örn. 2.5.0 ila 2.6.2).
  • Kararsız bir yoldaysanız, ya daha yeni bir kararlı sürümü ya da aynı sürümün daha yeni bir kararsız yapısını seçersiniz (örneğin, 1.2.0-alpha05, 1.2.0-beta01 veya 1.2.1'e geçer, ancak değişmez 1.2.2-alfa01'e).
  • Bir kitaplığın yeni bir ana sürümü varsa, muhtemelen önemli değişiklikler vardır ve bu güncellemeyi kendi PR’sinde yapmalısınız (örneğin, 1.2.5'ten 2.0.1'e).

Android Studio, önerilen kitaplık güncellemeleriyle ilgili ipuçları sağlar (ve Android Studio Giraffe’de Sürüm Katalogları desteği geliyor!), ancak bu işlemi iki farklı şekilde de otomatikleştirebilirsiniz:

  • Güncellemelerle birlikte projenize PR’ler gönderen harici bir hizmet. Bunun örnekleri Github’ın Dependabot’u veya Renovate’dir.
  • RefreshVersions veya version-catalog-update-plugin gibi, komut üzerindeki bağımlılıkları güncelleyen, kod tabanınıza yüklenmiş bir eklenti.

Compose bağımlılıklarıyla güncellemeleri otomatikleştirme

Yukarıda açıklanan sürüm yükseltme algoritması basittir, ancak her zaman varsayılan kurulumla çalışmaz. Örneğin, Compose bağımlılıkları kullanılırken otomatik güncellemeler başarısız olabilir. Bunun nedeni, Compose Compiler’ın belirli Kotlin sürümleriyle katı bir eşlemeye sahip olmasıdır. Tabloyu burada bulabilirsiniz.

Tipik olarak, bu iki bağımlılık aynı anda yayınlanmaz, bu nedenle Kotlin’in yeni sürümü ile ilgili Compose Compiler arasında birkaç günlük bir gecikme olur. Bu, Compose Compiler henüz piyasaya sürülmediyse Kotlin’i en son sürüme güncelleyemeyeceğiniz anlamına gelir.

Renovate ile group:all direktifini kullanarak tüm güncellemeleri tek bir PR’de gruplandırıyoruz (konfigürasyon dosyalarımızdan birinde çalışırken görün). Bu, bakımı daha da kolaylaştırır çünkü her hafta yalnızca bir PR onaylamak gerekir. Ancak bunu yapmak, her Kotlin sürümü olduğunda, Compose projenizin Compose derleyicisi yayınlanana kadar kesintiye uğrayacağı anlamına gelir. Yapınız bozulduğunda güncellemelerin geri kalanının beklemek zorunda kalacağı gerçeği olmasaydı, bu büyük bir anlaşma olmazdı.

Bunu düzeltmek için güncellemeleri birlikte gruplandırabilirsiniz. Fikir, diğer bağımlılıklarınızı güncellemeye devam edebilmeniz için Kotlin güncellemelerini diğer değişikliklerden ayırmaktır

Renovate’te bu, packageRules ile yapılır:

Bu kurallar “kotlin” adında bir grup adı oluşturur ve Kotlin’in kendisini, Compose derleyicisini ve KSP’yi ekler.

Bununla Renovate, şube başına iki farklı PR üretecektir. Biri “kotlin” grubu için, diğeri ise diğer bağımlılıklar için.

Kotlin PR, beklendiği gibi yalnızca Kotlin ile ilgili güncellemeleri içerir:

Örnek PR yalnızca Kotlin bağımlılıklarını güncelliyor

Bu, Kotlin’in yeni bir sürümü mevcut olduğunda, bu PR’nin oluşturulacağı ve derlemesinin Compose Compiler mevcut olana kadar başlangıçta başarısız olacağı anlamına gelir.

Renovate’in önemli bir özelliği, PR’larından birine bir taahhüt eklerseniz, botun onu güncellemeye çalışmayı bırakarak ince ayarlar yapmanıza izin vermesidir.

Sonuç olarak, bağımlılıklarınızı taze tutacak bir sistem kurmak büyük bir yatırımdır. Daha üretken olabilmeniz veya eve erken gidebilmeniz için projelerinizin bakım yükünü azalttığı sürece hangi sistemi kullandığınız önemli değildir :)

Hepinize İyi okumalar :)

--

--

Kaan Enes KAPICI
IBTech
Writer for

Hi everybody, I’m Kaan. Application(Android) Engineer at IBTECH. Love cats and dogs.🐶🐈. Writing whatever I want..