Yinelemeli kod geliştirme

Mobil uygulama geliştiricisi olarak, uygulamanızın kullanıcı arayüzünü genellikle her şeyi aynı anda geliştirmek yerine adım adım geliştirirsiniz. Android Studio, Jetpack Compose ile bu yaklaşımı benimser. İncelemek, değerleri değiştirmek ve nihai sonucu doğrulamak için tam derleme gerektirmeyen araçlar sunar.

Canlı Düzenleme

Canlı Düzenleme, emülatörlerdeki ve fiziksel cihazlardaki composable'ları anında güncellemenize olanak tanıyan bir özelliktir. Bu işlev, uygulamanızı yazma ve oluşturma arasındaki bağlam geçişlerini en aza indirerek kesintisiz bir şekilde daha uzun süre kod yazmaya odaklanmanızı sağlar.

Live Edit'in üç modu vardır:

  • Manuel: Kod değişiklikleri, Control+' (macOS'te Command+') kullanılarak manuel olarak gönderildiğinde uygulanır.
  • Kaydederken manuel: Kod değişiklikleri, Control+S (macOS'te Command+S) kullanılarak manuel olarak kaydedildiğinde uygulanır.
  • Otomatik: Değişiklikler, composable işlevi güncellediğinizde cihazınıza veya emülatörünüze uygulanır.

Canlı Düzenleme, kullanıcı arayüzü ve kullanıcı deneyimi ile ilgili kod değişikliklerine odaklanır. Canlı Düzenleme, yöntem imzası güncellemeleri, yeni yöntemler ekleme veya sınıf hiyerarşisi değişiklikleri gibi değişiklikleri desteklemez. Daha fazla bilgi için Canlı Düzenleme'nin sınırlamaları listesine bakın.

Bu özellik, uygulamanızı oluşturma ve çalıştırma veya Değişiklikleri Uygula işlevinin yerini almaz. Bunun yerine, Compose kullanıcı arayüzü geliştirirken oluşturma, dağıtma ve yineleme işlemlerini yaparken iş akışınızı optimize etmek için tasarlanmıştır.

En iyi uygulama iş akışı şu şekildedir:

  1. Uygulamanızı çalıştırılabilecek şekilde ayarlayın.
  2. Canlı Düzenleme'nin desteklemediği bir değişiklik yapmanız gerekene kadar (ör. uygulama çalışırken yeni yöntemler ekleme) mümkün olduğunca Canlı Düzenleme'yi kullanın.
  3. Desteklenmeyen bir değişiklik yaptıktan sonra ÇalıştırRun
icon tıklayarak uygulamanızı yeniden başlatın ve Canlı Düzenleme'ye devam edin.

Canlı Düzenleme'yi kullanmaya başlama

Başlamak için aşağıdaki adımları uygulayarak boş bir Compose etkinliği oluşturun, projenizde Canlı Düzenleme'yi etkinleştirin ve Canlı Düzenleme ile değişiklikler yapın.

Yeni projenizi oluşturma

  1. Başlamadan önce Android Studio Giraffe veya daha yeni bir sürümün yüklü olduğundan ve fiziksel cihazınızın ya da emülatörünüzün API düzeyinin en az 30 olduğundan emin olun.

  2. Android Studio'yu açın ve Welcome to Android Studio (Android Studio'ya Hoş Geldiniz) iletişim kutusunda New Project'i (Yeni Proje) seçin. Zaten açık bir projeniz varsa Dosya > Yeni > Yeni Proje'ye giderek yeni bir proje oluşturabilirsiniz.

  3. Telefon ve Tablet için Empty Compose Activity (Boş Oluşturma Etkinliği) şablonunu seçin ve Next'i (İleri) tıklayın.

    Android Studio'da şablon seçimi
    1. şekil Seçebileceğiniz şablonlar. Canlı Düzenleme için Empty Compose Activity'yi (Boş Oluşturma Etkinliği) seçin.
  4. Yeni Proje iletişim kutusunu gerekli bilgilerle (ad, paket adı, kaydetme konumu, minimum SDK ve derleme yapılandırma dili) doldurun.

    4. adımda belirtilen örnek proje ayarları Android Studio'ya girilir.
    Şekil 2. Örnek proje ayarları.
  5. Son'u tıklayın.

Canlı Düzenleme'yi etkinleştirme

  1. Canlı Düzenleme'yi etkinleştirmek için ayarlara gidin.

    • Windows veya Linux'ta Dosya > Ayarlar > Düzenleyici > Canlı Düzenleme'ye gidin.
    • macOS'te Android Studio > Settings > Editor > Live Edit'e gidin.
  2. Ayarlardan Canlı Düzenleme seçeneğini ve çalıştırmak istediğiniz modu belirleyin.

    Manuel modda, Control+' (macOS'te Command+') tuşuna her bastığınızda kod değişiklikleriniz gönderilir. Kaydetme işleminde manuel modda, kod değişiklikleriniz her manuel kaydetme işleminde uygulanır. Kaydetmek için Control+S (macOS'te Command+S) tuşlarına basın. Otomatik modda, kod değişiklikleriniz siz değişiklik yaptıkça cihazınıza veya emülatörünüze uygulanır.

    Android Studio ayarlarında Canlı Düzenleme onay kutusu kullanıcı arayüzü
    Şekil 3. Canlı düzenleme ayarları.
  3. Düzenleyicide, uygulamanızın giriş noktası olan MainActivity dosyasını açın.

  4. Uygulamanızı dağıtmak için Run'ı (Çalıştır) Kullanıcı arayüzü düğmesi tıklayın.

  5. Canlı Düzenleme'yi açtıktan sonra Çalışan Cihazlar araç penceresinin sağ üst kısmında Güncel yeşil onay işareti görünür:

    Canlı Düzenleme yeşil onay işareti kullanıcı arayüzü

Değişiklik yapma ve inceleme

Düzenleyicide desteklenen değişiklikleri yaptığınızda sanal veya fiziksel test cihazı otomatik olarak güncellenir.

Örneğin, MainActivity içindeki mevcut Greeting yöntemini aşağıdaki gibi düzenleyin:

@Composable
fun Greeting(name: String) {
    Text(
        text = "Hello $name!",
        Modifier
            .padding(80.dp) // Outer padding; outside background
            .background(color = Color.Cyan) // Solid element background color
            .padding(16.dp) // Inner padding; inside background, around text)
    )
}

Şekil 4'te gösterildiği gibi, değişiklikleriniz test cihazında anında görünür.

Cihazda uygulanan selamlama yöntemi değişiklikleri
4. şekil. Canlı Düzenleme değişikliklerini Greeting yönteminde gösteren test cihazı.

Canlı Düzenleme ile ilgili sorunları giderme

Düzenlemelerinizi test cihazında görmüyorsanız Android Studio, düzenlemelerinizi güncelleyememiş olabilir. Şekil 5'te gösterildiği gibi, derleme hatasını belirten Canlı Düzenleme göstergesinin Güncel Değil olup olmadığını kontrol edin. Hata hakkında bilgi edinmek ve hatayı çözmeyle ilgili önerileri görmek için göstergeyi tıklayın.

Eski Canlı Düzenleme simgesi
5. şekil. Canlı düzenleme durum göstergesi.

Canlı Düzenleme'nin sınırlamaları

Mevcut sınırlamalar aşağıda listelenmiştir.

  • [Yalnızca Android Studio Giraffe ve sonraki sürümler için geçerlidir] Canlı Düzenleme için Compose Runtime 1.3.0 veya sonraki sürümler gerekir. Projenizde Compose'un daha eski bir sürümü kullanılıyorsa Canlı Düzenleme devre dışı bırakılır.

  • [Yalnızca Android Studio Giraffe ve sonraki sürümler için geçerlidir] Canlı Düzenleme için AGP 8.1.0-alpha05 veya sonraki bir sürüm gerekir. Projenizde AGP'nin daha düşük bir sürümü kullanılıyorsa Canlı Düzenleme devre dışı bırakılır.

  • Canlı Düzenleme özelliği için API düzeyi 30 veya daha yüksek bir sürümü çalıştıran fiziksel bir cihaz ya da emülatör gerekir.

  • Canlı Düzenleme yalnızca işlev gövdesinin düzenlenmesini destekler. Bu nedenle, işlev adını veya imzayı değiştiremez, işlev ekleyemez ya da kaldıramaz veya işlev dışı alanları değiştiremezsiniz.

  • Canlı Düzenleme, bir dosyada Compose işlevini ilk kez değiştirdiğinizde uygulamanın durumunu sıfırlar. Bu durum yalnızca ilk kod değişikliğinden sonra gerçekleşir. Uygulama durumu, bu dosyada Compose işlevlerinde yaptığınız sonraki kod değişiklikleriyle sıfırlanmaz.

  • Canlı Düzenleme ile değiştirilen sınıflar, performans cezası alabilir. Performansını değerlendiriyorsanız uygulamanızı çalıştırın ve temiz bir yayın derlemesi kullanın.

  • Hata ayıklayıcının, Canlı Düzenleme ile değiştirdiğiniz sınıflarda çalışması için tam çalıştırma yapmanız gerekir.

  • Çalışan bir uygulamayı Canlı Düzenleme ile düzenlediğinizde uygulama kilitlenebilir. Bu durumda, Çalıştır UI
button düğmesini kullanarak uygulamayı yeniden dağıtabilirsiniz.

  • Canlı Düzenleme, projenizin derleme dosyasında tanımlanan herhangi bir bayt kodu manipülasyonunu gerçekleştirmez. Örneğin, proje Build (Derle) menüsündeki seçenekler kullanılarak veya Build (Derle) ya da Run (Çalıştır) düğmeleri tıklanarak derlendiğinde uygulanacak bayt kodu manipülasyonu.

  • Composable olmayan işlevler cihazda veya emülatörde canlı olarak güncellenir ve tam bir yeniden oluşturma tetiklenir. Tam yeniden oluşturma, güncellenen işlevi çağırmayabilir. Birleştirilebilir olmayan işlevler için yeni güncellenen işlevleri tetiklemeniz veya uygulamayı tekrar çalıştırmanız gerekir.

  • Canlı Düzenleme, uygulama yeniden başlatıldığında devam etmez. Uygulamayı tekrar çalıştırmanız gerekir.

  • Live Edit yalnızca hata ayıklanabilir işlemleri destekler.

  • Canlı Düzenleme, derleme yapılandırmasında kotlinOptions altında moduleName için özel değerler kullanan projeleri desteklemez.

  • Canlı Düzenleme, çoklu dağıtım içeren dağıtımlarda çalışmaz. Bu, bir cihaza dağıtım yapıp ardından başka bir cihaza dağıtım yapamayacağınız anlamına gelir. Canlı Düzenleme yalnızca uygulamanın dağıtıldığı son cihaz grubunda etkindir.

  • Canlı Düzenleme, çok cihazlı dağıtımlarda (hedef cihaz açılır listesinde Birden fazla cihaz seç seçeneği kullanılarak oluşturulan ve birden fazla cihaza dağıtılan) çalışır. Ancak bu özellik resmi olarak desteklenmez ve sorunlar yaşanabilir. Sorun yaşarsanız lütfen bunları bildirin.

  • Değişiklikleri Uygula/Kod Değişikliklerini Uygula, Canlı Düzenleme ile uyumlu değildir ve çalışan uygulamanın yeniden başlatılmasını gerektirir.

  • Canlı Düzenleme şu anda Android Automotive projelerini desteklememektedir.

Canlı Düzenleme hakkında sık sorulan sorular

  • Canlı Düzenleme'nin mevcut durumu nedir?

    Canlı Düzenleme, Android Studio Giraffe'te kullanılabilir. Bu özelliği etkinleştirmek için Dosya > Ayarlar > Düzenleyici > Canlı Düzenleme'ye (macOS'te Android Studio > Ayarlar > Düzenleyici > Canlı Düzenleme) gidin.

  • Canlı düzenlemeyi ne zaman kullanmalıyım?

    Kullanıcı deneyimi öğelerinde (ör. değiştirici güncellemeleri ve animasyonlar) yapılan güncellemelerin genel uygulama deneyimi üzerindeki etkisini hızlıca görmek istediğinizde Canlı Düzenleme'yi kullanın.

  • Canlı düzenlemeyi ne zaman kullanmamalıyım?

    Canlı Düzenleme, kullanıcı arayüzü ve kullanıcı deneyimi ile ilgili kod değişikliklerine odaklanır. Yöntem imzası güncellemeleri, yeni yöntemler ekleme veya sınıf hiyerarşisi değişiklikleri gibi değişiklikleri desteklemez. Daha fazla bilgi için Canlı Düzenleme'nin sınırlamaları başlıklı makaleyi inceleyin.

  • Ne zaman Compose Preview'u kullanmalıyım?

    Tek tek composable'lar geliştirirken Compose Preview'u kullanın. Önizleme, Compose öğelerini görselleştirir ve kod değişikliklerinin etkisini göstermek için otomatik olarak yenilenir. Önizleme, kullanıcı arayüzü öğelerinin farklı yapılandırmalar ve durumlar (ör. koyu tema, yerel ayarlar ve yazı tipi ölçeği) altında görüntülenmesini de destekler.

Compose ile yinelemeli kod geliştirme

Compose Multiplatform için Canlı Düzenleme ve Anında Yeniden Yükleme, Compose ile geliştirme yaparken size zaman kazandırabilecek ve üretkenliğinizi artırabilecek özelliklerdir. Ancak, farklı geliştirme türlerinin ihtiyaçlarını karşılarlar:

  • Canlı Düzenleme, Android uygulamaları için Jetpack Compose ile yinelemeli geliştirmeyi destekler. Emülatörlerdeki ve fiziksel cihazlardaki composable'ları gerçek zamanlı olarak güncellemenizi sağlar. Bu işlev, uygulamanızı yazma ve oluşturma arasında bağlam geçişlerini en aza indirerek kesintisiz bir şekilde daha uzun süre kod yazmaya odaklanmanızı sağlar.

  • Compose Hot Reload da aynı ihtiyacı karşılar ancak Compose Multiplatform ile oluşturulan masaüstü uygulamalarını destekler. Bu araç, Compose Multiplatform uygulamasında kullanıcı arayüzü kodunuzda değişiklik yapmanıza ve kodunuz her değiştirildiğinde akıllıca yeniden yükleyerek sonuçları anında görmenize olanak tanır.

Bu iki özellik, Compose motorunda birçok teknolojiyi paylaşsa ve benzer birçok kullanım alanını desteklese de farklı Compose geliştirme türlerine uygulandıkları için aynı özelliklere sahip değildir.

Android uygulaması geliştiriyorsanız geliştirme sürecinizi hızlandırmak için Live Edit'i kullanmanız gerekir. Compose Multiplatform kullanarak bir masaüstü uygulaması geliştiriyorsanız Compose Hot Reload'u kullanmanız gerekir.

Değişkenlerin canlı düzenlenmesi (kullanımdan kaldırıldı)

Android Studio, önizlemelerdeki, emülatördeki ve fiziksel cihazdaki composable'larda kullanılan bazı sabit değişmezleri anında güncelleyebilir. Desteklenen türlerden bazıları şunlardır:

  • Int
  • String
  • Color
  • Dp
  • Boolean

Kullanıcının kaynak kodundaki değişmezleri değiştirdiği ve önizlemenin dinamik olarak güncellendiği video

Sabit değerlerin canlı düzenlemesi kullanıcı arayüzü göstergesi aracılığıyla sabit değer süslemelerini etkinleştirerek derleme adımı olmadan gerçek zamanlı güncellemeleri tetikleyen sabit değerleri görüntüleyebilirsiniz:

Değişkenlerin Canlı Düzenlenmesini Etkinleştirme

Değişiklikleri Uygulama

Değişiklikleri Uygula, uygulamanızı bir emülatöre veya fiziksel cihaza yeniden dağıtmak zorunda kalmadan kodu ve kaynakları güncellemenize olanak tanır (bazı sınırlamalar vardır).

Birleştirilebilir işlevleri her eklediğinizde, değiştirdiğinizde veya sildiğinizde Apply Code Changes (Kod Değişikliklerini Uygula) düğmesini tıklayarak uygulamanızı yeniden dağıtmak zorunda kalmadan güncelleyebilirsiniz:

Kullanıcı "Değişiklikleri uygula" düğmesini tıkladığında