Takip et

Expo’da Yerel ve Bulut Derlemeleri: expo prebuild ve eas build Gerçekte Ne Yapar?

Expo, React Native uygulamalarını geliştirmeyi kolaylaştıran bir dizi araç ve hizmet sunar. Başlangıçta, geliştiriciler native modüllerle uğraşm…

Expo’da Yerel ve Bulut Derlemeleri: expo prebuild ve eas build Gerçekte Ne Yapar?

Expo, React Native ile mobil uygulama geliştirmeyi basitleştiren güçlü bir araç ve çerçevedir. Geliştiricilere native kod yazma zahmetine girmeden hızlıca uygulama prototipleri oluşturma ve dağıtma imkanı sunar. Ancak, projeler büyüdükçe ve özelleştirme ihtiyaçları arttıkça, “derleme” süreci karmaşıklaşabilir. Bu makalede, Expo ekosistemindeki expo prebuild ve eas build komutlarının ne işe yaradığını, yerel ve bulut derlemelerin farklarını, avantajlarını ve dezavantajlarını detaylı bir şekilde inceleyeceğiz. Amacımız, hangi derleme stratejisinin projeniz için en uygun olduğuna karar vermenize yardımcı olmaktır.

Expo Geliştirme Ortamına Genel Bakış

Expo, React Native uygulamalarını geliştirmeyi kolaylaştıran bir dizi araç ve hizmet sunar. Başlangıçta, geliştiriciler native modüllerle uğraşmadan JavaScript ile kod yazarak iOS ve Android platformları için uygulamalar oluşturabilirlerdi. Bu, “Managed Workflow” olarak bilinen bir yaklaşımdır ve Expo SDK’sının sağladığı API’lar aracılığıyla birçok native özelliği kullanmanıza olanak tanır.

Expo’nun Vaatleri ve Temel Bileşenleri

Expo’nun temel vaadi, geliştirme sürecini hızlandırmak ve native ortam kurulumu gibi karmaşık adımları ortadan kaldırmaktır. Bu, Expo Go uygulaması sayesinde kodunuzu anında cihazınızda test edebilme yeteneğiyle desteklenir. Expo SDK, kamera, konum, bildirimler gibi yaygın native özelliklere erişim sağlayan önceden oluşturulmuş modüller sunar.

Managed Workflow ve Bare Workflow

Expo’da iki ana iş akışı bulunur: Managed Workflow ve Bare Workflow. Managed Workflow, Expo’nun tüm kolaylıklarını sunduğu, native kod tabanına doğrudan erişimin olmadığı durumdur. Uygulamanız tamamen JavaScript ve Expo SDK ile çalışır. Bare Workflow ise, projenize bir iOS ve Android native klasörü ekleyerek React Native’in geleneksel yapısına geçmenizi sağlar. Bu, özel native modüller eklemeniz veya native kodda derinlemesine değişiklikler yapmanız gerektiğinde tercih edilir.

Derleme Sürecinin Önemi

Uygulamanızı son kullanıcılara dağıtabilmek için bir derleme (build) sürecinden geçmesi gerekir. Bu süreç, JavaScript kodunuzu, varlıklarınızı (resimler, fontlar vb.) ve gerekli native kodları bir araya getirerek bir uygulama paketi (APK for Android, IPA for iOS) oluşturur. Derleme, uygulamanızın performansını, boyutunu ve kararlılığını doğrudan etkileyen kritik bir adımdır.

Geleneksel React Native ve Expo Farkı

React Native, JavaScript ile native mobil uygulamalar geliştirmenizi sağlayan açık kaynaklı bir çerçevedir. Ancak, geleneksel React Native projelerinde, native modüllerle çalışmak ve derleme ortamını kurmak genellikle karmaşık ve zaman alıcıdır. Expo, bu karmaşıklığı azaltarak geliştiricilerin daha çok uygulama mantığına odaklanmasını sağlar.

Native Modüller ve Köprüler

Geleneksel React Native’de, JavaScript kodunuzun cihazın native özelliklerine (örneğin kamera, Bluetooth) erişmesi gerektiğinde, native modüller ve JavaScript-native köprüleri kullanılır. Bu modüller, platforma özgü dillerde (Java/Kotlin for Android, Objective-C/Swift for iOS) yazılır ve React Native uygulamanızla iletişim kurar. Bu, geliştiricinin native geliştirme bilgisine sahip olmasını gerektirebilir.

Expo SDK’nın Rolü

Expo SDK, birçok yaygın native modülü sizin için önceden paketleyerek bu karmaşıklığı ortadan kaldırır. Managed Workflow’da, Expo’nun sağladığı API’ları kullanarak bu native özelliklere erişirsiniz. Expo, bu modüllerin platformlar arası uyumluluğunu ve sorunsuz çalışmasını sağlar. Bu sayede, native kod yazmaya veya bağımlılıkları yönetmeye gerek kalmaz.

Derleme Karmaşıklığına Etkisi

Expo SDK, derleme sürecini de basitleştirir. Managed Workflow’da, Expo’nun bulut tabanlı derleme hizmetleri (önceleri “classic build”, şimdi EAS Build) tüm native derleme sürecini sizin için yönetir. Bu, yerel ortamınızda Xcode veya Android Studio gibi araçları kurma ve yapılandırma ihtiyacını ortadan kaldırır. Ancak, özel native modüller eklemek istediğinizde bu durum değişir.

expo prebuild Nedir ve Ne Zaman Kullanılır?

expo prebuild komutu, Expo’nun Managed Workflow’undan Bare Workflow’a geçiş yapmanızı sağlayan kritik bir araçtır. Bu komut, projenize platforma özgü iOS ve Android dizinlerini (native kod tabanını) ekleyerek, uygulamanızın native katmanına tam erişim sağlar.

Managed Workflow’dan Bare Workflow’a Geçiş

Managed Workflow, birçok proje için yeterli olsa da, bazen Expo SDK’sında bulunmayan özel bir native modül kullanmanız veya uygulamanızın native kodunda derinlemesine değişiklikler yapmanız gerekebilir. İşte bu noktada expo prebuild devreye girer. Bu komut, Expo’nun sizin için yönettiği native katmanı açığa çıkarır ve size kontrolü verir.

Native Kod Tabanı Oluşturma

expo prebuild komutunu çalıştırdığınızda, Expo projenizin kök dizinine ios ve android klasörleri ekler. Bu klasörler, uygulamanızın Xcode ve Android Studio ile derlenebilmesi için gerekli tüm native proje dosyalarını içerir. Artık bu klasörlerdeki native kodları doğrudan düzenleyebilir, özel native modüller ekleyebilir veya native bağımlılıkları yönetebilirsiniz.

npx expo prebuild

Bu komut, projenizin app.json veya app.config.js dosyasındaki yapılandırmaları okur ve buna göre native proje dosyalarını oluşturur. Örneğin, uygulamanızın paket adı, ikonları, splash ekranları gibi ayarlar native projelere yansıtılır.

Özelleştirme İhtiyacı ve Yerel Geliştirme

expo prebuild kullanmanın ana nedenleri şunlardır:

  • Expo SDK'sında bulunmayan bir native modül (örneğin, özel bir Bluetooth modülü) kullanmak.
  • Uygulamanın native yaşam döngüsüne müdahale etmek (örneğin, özel bildirim işleme).
  • Native performans optimizasyonları yapmak.
  • Belirli native kütüphanelerin veya SDK'ların entegrasyonu.

prebuild sonrası, uygulamanızı yerel olarak Xcode veya Android Studio kullanarak derleyebilir ve çalıştırabilirsiniz. Bu, native katmanda hata ayıklama ve geliştirme yapmanızı sağlar.

eas build Nedir ve Neden Bulut Derlemesi?

eas build, Expo Application Services (EAS) platformunun bir parçasıdır ve uygulamalarınızı bulut ortamında derlemenizi sağlayan güçlü bir araçtır. Hem Managed Workflow hem de Bare Workflow projeleri için kullanılabilir ve yerel derleme ortamının karmaşıklığını ortadan kaldırır.

Expo Application Services (EAS) Tanıtımı

EAS, Expo'nun mobil uygulama geliştirme ve dağıtım süreçlerini basitleştirmek için sunduğu bir dizi bulut hizmetidir. EAS Build, bu hizmetlerin en önemlilerinden biridir. Geliştiricilerin, native derleme ortamlarını kendi makinelerinde kurma ve bakımını yapma zorunluluğunu ortadan kaldırır.

Bulut Ortamında Derleme Avantajları

eas build kullanmanın başlıca avantajları şunlardır:

  • Ortam Tutarlılığı: Her derleme, temiz ve tutarlı bir bulut ortamında gerçekleşir, bu da "benim makinemde çalışıyor" sorunlarını ortadan kaldırır.
  • Hız ve Verimlilik: Güçlü bulut sunucuları sayesinde derleme süreleri genellikle yerel derlemelerden daha hızlıdır.
  • Kaynak Tasarrufu: Kendi makinenizin CPU, RAM ve depolama kaynaklarını kullanmazsınız.
  • CI/CD Entegrasyonu: EAS Build, Continuous Integration/Continuous Deployment (CI/CD) süreçlerine kolayca entegre edilebilir.
  • Platform Bağımsızlığı: macOS'a sahip olmayan Windows veya Linux kullanıcıları bile iOS uygulamaları derleyebilir.
  • Sürüm Yönetimi: EAS, derlemelerinizin geçmişini ve çıktılarını (APK, IPA) saklar.

eas build komutunu çalıştırmak için Expo CLI'ı kullanırız:

eas build --platform android
eas build --platform ios

Bu komutlar, projenizi Expo sunucularına yükler ve bulut ortamında derleme sürecini başlatır. Derleme tamamlandığında, uygulama paketini indirmeniz için bir bağlantı alırsınız.

CI/CD Entegrasyonu ve Otomasyon

EAS Build, GitHub Actions, GitLab CI/CD veya diğer CI/CD araçlarıyla kolayca entegre edilebilir. Bu, her kod değişikliğinde otomatik olarak yeni bir uygulama derlemesi oluşturmanızı ve test etmenizi sağlar. Bu otomasyon, geliştirme döngüsünü hızlandırır ve hataları erken aşamada yakalamaya yardımcı olur.

Yerel Derleme (Local Build) Süreci ve Zorlukları

Yerel derleme, uygulamanızı kendi geliştirme makinenizde, Xcode (iOS için) veya Android Studio (Android için) kullanarak oluşturma sürecidir. expo prebuild komutunu çalıştırdıktan sonra bu yolu izleyebilirsiniz.

Gereksinimler: Ortam Kurulumu

Yerel derleme yapabilmek için geliştirme ortamınızın doğru şekilde kurulmuş olması gerekir. Bu genellikle şunları içerir:

  • macOS: Xcode (iOS için), Homebrew, Node.js, Watchman, CocoaPods.
  • Windows/Linux: Android Studio, Java Development Kit (JDK), Node.js, Watchman.
  • Ortam değişkenlerinin doğru yapılandırılması.

Bu kurulum süreci, özellikle farklı işletim sistemleri ve bağımlılık versiyonları arasında uyumsuzluklar nedeniyle oldukça karmaşık ve zaman alıcı olabilir.

Hata Ayıklama ve Sorun Giderme

Yerel derleme sırasında karşılaşılan hatalar, genellikle native ortam yapılandırması, bağımlılık çakışmaları veya Xcode/Android Studio'nun kendi sorunlarından kaynaklanır. Bu tür hataların ayıklanması, native geliştirme bilgisi ve deneyimi gerektirebilir. Hata mesajları bazen anlaşılması zor olabilir ve çözüm bulmak için uzun araştırmalar yapmak gerekebilir.

Bakım ve Güncelleme Yükü

Yerel derleme ortamının bakımı da sürekli bir yüktür. Xcode, Android Studio, JDK, Node.js ve diğer bağımlılıkların güncellemeleri sık sık yayınlanır. Bu güncellemeleri takip etmek ve ortamınızı güncel tutmak, uyumluluk sorunlarına yol açabilir ve derleme sürecini kesintiye uğratabilir.

Bulut Derleme (Cloud Build) Avantajları ve Dezavantajları

EAS Build ile bulut derlemesi, özellikle Expo'nun Bare Workflow'una geçiş yapan projeler için önemli bir kolaylık sağlar. Yerel derlemenin zorluklarını ortadan kaldırarak daha verimli bir süreç sunar.

Avantajlar: Hız, Tutarlılık, Kaynak Tasarrufu

  • Hız: Güçlü bulut sunucuları, derleme süresini kısaltır.
  • Tutarlılık: Her derleme için aynı temiz ortam kullanılır, bu da "benim makinemde çalışıyor" sorunlarını ortadan kaldırır.
  • Kaynak Tasarrufu: Geliştiricilerin kendi makinelerinin kaynaklarını (CPU, RAM) tüketmesini engeller. Özellikle iOS derlemeleri için macOS gereksinimini ortadan kaldırır.
  • Bakım Kolaylığı: Native ortamın kurulumu ve bakımıyla uğraşmanıza gerek kalmaz.
  • CI/CD Entegrasyonu: Otomatik derleme ve dağıtım süreçleri için idealdir.

Dezavantajlar: Bağımlılık, Kontrol Eksikliği (algılanan), Maliyet

  • İnternet Bağımlılığı: Derleme yapmak için aktif bir internet bağlantısına ihtiyacınız vardır.
  • Kontrol Eksikliği (Algılanan): Bazı geliştiriciler, derleme sürecinin tam kontrolünü kendi ellerinde tutmayı tercih edebilir. Ancak EAS, derleme günlükleri ve yapılandırma seçenekleri ile bu kontrolü büyük ölçüde sağlar.
  • Maliyet: EAS Build'in ücretsiz katmanı belirli bir kullanım limitine sahiptir. Büyük ekipler veya sık derleme yapan projeler için ücretli planlara geçmek gerekebilir.
  • Gizlilik Endişeleri: Bazı hassas projeler için kodun üçüncü taraf bir sunucuya yüklenmesi bir endişe kaynağı olabilir. Ancak Expo, bu konuda güçlü güvenlik önlemleri almaktadır.

Güvenlik ve Gizlilik Hususları

EAS Build, kodunuzu ve uygulama varlıklarınızı güvenli bir şekilde işler. Expo, derleme sunucularında hassas verilerinizi korumak için endüstri standardı güvenlik protokolleri kullanır. Özel anahtarlar ve sertifikalar gibi kritik bilgiler, güvenli bir şekilde yönetilir ve derleme sonrası silinir. Ancak, her zaman olduğu gibi, projenizin hassasiyetine göre risk değerlendirmesi yapmak önemlidir.

Doğru Yaklaşımı Seçmek: Karar Verme Kriterleri

Yerel derleme mi yoksa bulut derlemesi mi kullanacağınıza karar verirken, projenizin ve ekibinizin özel ihtiyaçlarını göz önünde bulundurmanız gerekir. İşte size yardımcı olacak bazı kriterler:

Proje Büyüklüğü ve Karmaşıklığı

  • Küçük/Orta Ölçekli Projeler (Managed Workflow): Eğer uygulamanız Expo SDK'sının sağladığı özelliklerle sınırlı kalabiliyorsa, eas build ile bulut derlemesi en iyi seçenektir. Native kodla uğraşmanıza gerek kalmaz.
  • Büyük/Karmaşık Projeler (Bare Workflow): Özel native modüller, derinlemesine native entegrasyonlar veya performans optimizasyonları gerektiren projelerde expo prebuild ile Bare Workflow'a geçmek kaçınılmaz olabilir. Bu durumda bile, derleme için eas build kullanmak çoğu zaman yerel derlemeden daha avantajlıdır.

Ekip Yetkinlikleri ve Kaynaklar

  • Native Geliştirme Bilgisi: Ekibinizde iOS ve Android native geliştirme konusunda deneyimli kişiler varsa, yerel derleme ve hata ayıklama süreçleri daha yönetilebilir olabilir. Aksi takdirde, eas build'in sunduğu kolaylıklar paha biçilmezdir.
  • Donanım Kaynakları: Ekip üyelerinin güçlü geliştirme makinelerine (özellikle macOS) sahip olup olmaması, yerel derlemenin uygulanabilirliğini etkiler. EAS Build, bu donanım gereksinimlerini ortadan kaldırır.

Özelleştirme ve Native Modül İhtiyacı

Eğer uygulamanız Expo SDK'sında bulunmayan özel bir native modül gerektiriyorsa, expo prebuild ile Bare Workflow'a geçmeniz şarttır. Bu geçişten sonra bile, derleme için eas build kullanmaya devam edebilirsiniz. Hatta, çoğu durumda bu tercih edilir, çünkü native kod ekledikten sonra yerel derleme daha da karmaşık hale gelir.

Maliyet ve Zaman Kısıtlamaları

  • Maliyet: EAS Build'in ücretli katmanları, yerel derleme ortamının kurulumu ve bakımı için harcanacak zaman ve insan kaynakları maliyetiyle karşılaştırılmalıdır. Genellikle bulut derlemesi, uzun vadede daha uygun maliyetli olabilir.
  • Zaman: Hızlı derleme süreleri ve CI/CD entegrasyonu sayesinde EAS Build, geliştirme döngüsünü hızlandırır ve pazara çıkış süresini kısaltır.

Yerel Derleme vs. Bulut Derleme (EAS Build) Karşılaştırması

Özellik Yerel Derleme (expo prebuild sonrası) Bulut Derleme (eas build)
Ortam Kurulumu Karmaşık, zaman alıcı, platforma özgü Yok, Expo yönetir
Donanım Gereksinimi Yüksek (özellikle iOS için macOS) Düşük (sadece CLI için)
Derleme Hızı Makine gücüne bağlı, değişken Genellikle daha hızlı ve tutarlı
Tutarlılık Ortam farklılıkları nedeniyle düşük Yüksek, her zaman aynı temiz ortam
Bakım Yükü Yüksek (güncellemeler, bağımlılıklar) Düşük, Expo yönetir
CI/CD Entegrasyonu Manuel yapılandırma gerektirir Kolay ve yerleşik destek
Maliyet Donanım ve insan kaynağı maliyeti EAS planına göre değişir (ücretsiz katman mevcut)
Kontrol Tam kontrol Yüksek kontrol (yapılandırma dosyaları ile)

Sonuç

Expo'da uygulama geliştirirken, expo prebuild ve eas build komutlarının rollerini anlamak, projenizin başarısı için kritik öneme sahiptir. expo prebuild, Managed Workflow'dan Bare Workflow'a geçiş yaparak native kod tabanına erişim sağlar ve uygulamanızı özelleştirmenize olanak tanır. eas build ise, bu özelleştirilmiş veya standart Expo projelerini bulut ortamında verimli bir şekilde derleyerek, yerel derlemenin karmaşıklıklarını ortadan kaldırır.

Çoğu durumda, Managed Workflow'da başlayan ve zamanla özel native modüllere ihtiyaç duyan projeler için en verimli yol, expo prebuild ile Bare Workflow'a geçmek ve ardından derleme süreçleri için eas build kullanmaktır. Bu yaklaşım, hem esneklik hem de verimlilik sunar. Projenizin büyüklüğünü, ekip yetkinliklerini ve özelleştirme ihtiyaçlarını dikkatlice değerlendirerek, sizin için en uygun derleme stratejisini belirleyebilirsiniz. Expo, mobil uygulama geliştirme sürecini basitleştirirken, bu güçlü araçlar sayesinde her türlü proje için ölçeklenebilir ve yönetilebilir çözümler sunmaya devam ediyor.

SSS (Sık Sorulan Sorular)

expo prebuild kullanmak zorunda mıyım?

Hayır, eğer uygulamanız sadece Expo SDK'sının sağladığı özelliklerle sınırlı kalabiliyor ve özel native modüllere veya native kod değişikliklerine ihtiyacınız yoksa, Managed Workflow'da kalabilir ve eas build kullanarak uygulamanızı derleyebilirsiniz. expo prebuild, sadece native kod tabanına doğrudan erişmeniz gerektiğinde kullanılır.

eas build ücretsiz mi?

EAS Build'in ücretsiz bir katmanı bulunmaktadır. Bu katman, kişisel projeler ve küçük ekipler için genellikle yeterli olan belirli sayıda derleme ve kullanım hakkı sunar. Daha büyük projeler veya yoğun kullanım için ücretli planlara geçiş yapmanız gerekebilir. Detaylı bilgi için Expo'nun resmi web sitesindeki EAS fiyatlandırma sayfasına bakabilirsiniz.

Yerel derleme mi, bulut derleme mi daha hızlı?

Genellikle bulut derlemesi (EAS Build) daha hızlıdır. EAS, güçlü ve optimize edilmiş bulut sunucuları kullanarak derleme yapar. Yerel derleme hızı ise, kendi makinenizin donanım özelliklerine, işletim sistemine ve o anki yüküne bağlı olarak büyük ölçüde değişir. Ayrıca, bulut derlemesi, yerel ortam kurulumu ve bakımına harcanan zamanı da ortadan kaldırır.

Kendi CI/CD sistemim varsa eas build kullanmalı mıyım?

Evet, kullanmalısınız. EAS Build, kendi CI/CD sisteminize kolayca entegre edilebilir. Hatta, birçok geliştirici kendi CI/CD boru hatlarını (örneğin GitHub Actions) kullanarak eas build komutlarını tetikler. Bu, derleme sürecinin otomasyonunu sağlarken, Expo'nun bulut tabanlı derleme ortamının avantajlarından faydalanmanızı sağlar.

Hangi durumda expo prebuild sonrası eas build kullanmalıyım?

Eğer uygulamanız özel native modüller, kütüphaneler veya derinlemesine native entegrasyonlar gerektiriyorsa, expo prebuild ile Bare Workflow'a geçmeniz gerekir. Bu geçişten sonra bile, uygulamanızı yerel olarak derlemek yerine eas build kullanmanız şiddetle tavsiye edilir. Çünkü Bare Workflow'da yerel derleme ortamının kurulumu ve bakımı daha da karmaşık hale gelir. eas build, bu karmaşıklığı sizin için yöneterek derleme sürecini basitleştirir ve hızlandırır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık