Expo Application Services ile Mobil Uygulama Geliştirme
Yeni bir React Native mobil uygulaması oluşturacaksınız, düzenli bir geliştirme ve yayınlama süreciyle beraber fiyatlandırmasının da sizi yormamasını istiyorsunuz. İşte bu noktada EAS (Expo Application Services) bu süreci sistematik bir şekilde kolaylaştırıyor. 🚀
November 7, 2023
Türkçe
Yeni bir React Native mobil uygulaması oluşturacaksınız, düzenli bir geliştirme ve yayınlama süreciyle beraber fiyatlandırmasının da sizi yormamasını istiyorsunuz. İşte bu noktada EAS (Expo Application Services) bu süreci sistematik bir şekilde kolaylaştırıyor. 🚀
Bu yazımızda ise örnek bir proje oluşturup EAS’ın özelliklerinden nasıl faydalanabileceğimizi uygulamalı bir şekilde göreceğiz.
Proje örneğine başlamadan önce ihtiyacımız olanlar:
Expo Projesi Oluşturmak
Projemizi oluşturmak için şu komutu kullanıyoruz:
Bize ilk olarak uygulama ismimizin ne olacağını soracak, bu blog yazısında EAS’ı ele alacağımız için ben eas-testing-app ismine karar verdim.
Şeklinde bir çıktı gördüysek başarılı bir şekilde uygulamamızı oluşturabildik demektir. 🥳
Expo ayrıca uygulamayı oluşturduktan sonra bizim için git dosyasını da yaratıyor ve ilk commiti atmış oluyor.
Sonrasında ise oluşturduğumuz projeyi GitHub üzerindeki repomuza pushluyoruz.
Geliştirme Süreçleri
Expo ile geliştirme yapmanın en güzel yanlarından biri, Expo Go uygulaması sayesinde mobil cihazlar üzerinde hızlı ve kolay test imkanı sunmasıdır. Expo Go ile lokalde bir geliştirme sunucusu başlatarak, sadece bir QR kod aracılığıyla test cihazlarımızda çalışabiliyoruz.
Expo, iOS geliştirme yapmak için MacOS ihtiyacını dahi ortadan kaldırıyor. Bir iPhone test cihazıyla birlikte geliştirmelerimize devam edebiliyoruz.
Development Build
Ancak, eğer uygulamamıza özel yerel (native) kod eklemeleri yapmamız, yerel bağımlılıkları yönetmemiz veya config plugin’leri eklememiz gerekiyorsa, development build’lerini kullanarak geliştirme sürecine devam etmek zorundayız.
Development build’lerini ise Expo Go client’ının bize özgü versiyonları olarak düşünebiliriz.
Eğer,
Custom Native Kodlar
Native Dependency’ler
Config Plugin Ekleme
gibi ihtiyaçlarımız olursa da development build’lerden geliştirme süreçlerine devam etmemiz gerekiyor.
Normalde yarn start diyerek başlattığımız development sunucumuzu bu durumda yarn start — dev-client diyerek başlatmamız gerekecek.
EAS Build
EAS Build servisi, uygulamalarımızın yayınlanma ve hata ayıklama derlemelerini basitleştirerek geliştirme sürecimizi hızlandırır. Ayrıca, uygulama için imzalama (app signing) ve dahili dağıtım (internal distribution) işlemlerini otomatize ederek bize zamandan tasarruf sağlar. Tüm bu özellikler Expo’nun kendi paneli ile de tamamen entegre çalışır.
İlk build’imizi alarak başlarken, EAS Build’i de projemize adım adım entegre edelim.
npm install -g eas-cli komutu ile EAS’ı bilgisayarımıza kuralım.
eas login komutu ile Expo hesabımıza bilgisayarımızda giriş yapalım.
eas:configure komutu ile build’lerimizin konfigürasyonlarını yapalım.
Bu süreçte Expo bize farklı promptlar çıkaracak, şöyle ki:
Bu çıktıyı aldıysak ilk build’imizi almaya başlayabiliriz. Expo bizim için eas.json dosyasını oluşturmuş olacak ve EAS ile ilgili bütün konfigürasyonlarımız ve detayları, bu eas.json dosyasında tutulacak.
Projemizi lokal ortamdan expo.dev üzerinde başarıyla oluşturduğumuz ve bağlantı kurduğumuz zaman Expo’nun paneli üzerinden projeler bölümüne giderek projemizi görebiliriz.
Şimdi ilk build’imiz için gerekli olan kaynak kodu alarak Expo’ya yollayacağız, Expo bizim için gerekli kısmı kullanarak kendi sunucularında build alacak ve biz bu süreci eas-cli üzerinden yönetebileceğiz.
eas build — platform all ile iki platforma da build alırken, — platform seçeneğiyle de hangi platforma build alacağımızı seçebiliyoruz. Eğer iOS build’i almak isterseniz eas build — platform ios, android build’i almak isterseniz eas build — platform android seçeneklerini kullanabilirsiniz.
Bu komutu çalıştırdığımızda EAS bize bazı sorular soracak, sırayla bunları cevaplayacağız.
Her uygulamanın olması gerektiği gibi, sizin uygulamanızın da bir application ID’si olması gerek, ilk olarak bunu giriyoruz.
EAS burada kendi uyarılarında söylediği gibi Apple bilgilerimizi kullanarak bizim yerimize build bilgilerimizi girecek ve bu tarafta eğer erişim verirsek build ve gönderme süreçlerimizi oldukça kolaylaştıracak.
Bu konfigürasyonları elimizle de yapabiliriz fakat biz otomatik yapılmasını istediğimiz için onay verip Apple kimliğimizle giriş yapıyoruz. Sonrasında development takımımızı ve sağlayıcımızı seçiyoruz.
Bu tarafta yine EAS’ın akışını takip edip istenenleri cevaplayarak devam edeceğiz.
Expo burada build için kaynak kodda gerekli olan kısımları sıkıştırıp EAS’a yüklerken, sonrasında da EAS tarafında build’imizi başlatıyor. Biz de build işlemi başladıktan sonra ctrl + c ile gönül rahatlığıyla işlemi sonlandırıp, verilen linklerden build’lerimizi takip etmeye başlayabiliyoruz. 🙂
İlk olarak build EAS’ta sıraya girecek ve sonrasında ise build alma işlemi yapılacak. Bu iki süreç bittiğinde build’imiz Expo paneline düşmüş olacak.
Sonrasında panelden projeye girdiğimizde kronolojik olarak sıralanmış build’leri görebileceğiz.
Expo Panelinde Proje Build’leri
Buradan test cihazımızla build artifact kısmında indirme butonuna tıklayarak IPA/APK dosyamızı indirip kullanabiliyoruz.
Geliştirme Süreçleri Kurulumu ⚙️
Diyelim ki bir geliştirme sürecine başlayacağız. Elimizde bir task var ve bizden istenen ise uygulama açıldığında ana ekranda “Fix Branch 🤙” yazılması. Bu süreçte neler yapacağız ve Expo bize nasıl yardımcı olacak şimdi bunu göreceğiz.
EAS Update
EAS Update’i, EAS sunucularında barınan, istediğimiz güncellemeleri projeye expo-updates kullanarak yükleyen ve build süreçlerinden geçmenizi gerektirmeyen değişiklikler için birebir bir araç olarak tanımlayabiliriz. Diyelim ki Header’da yazan “Menü” yazısını “Menu” olarak değiştirmek istiyorsunuz, işte bu tarz ufak işler için bize oldukça yardımcı oluyor.
EAS Update’i kurmak için ilk olarak pull requestlerimizde çalışacak Github Action’lar oluşturacağız.
Öncelikle projemizin kök dizinine .github/workflows/update.yml dosyasını oluşturuyoruz. Dosya içerisine ise bu kodu yazıyoruz.
Bu oluşturduğumuz yml dosyası, repomuzdaki herhangi bir branche push geldiğinde çalışacak bir sistem kurmamızı sağlıyor.
Update job’u içerisinde Node versiyonunu 18 olarak belirliyoruz. Expo’nun sağladığı actionlar ile de güncellemelerimizi alıyoruz. Sonrasında dependency’lerimizi kuruyoruz ve son olarak da güncellemelerimizi yayınlıyoruz.
Yml dosyamızın içerisinde fark ettiğiniz üzere bir EXPO_TOKEN’a ihtiyacımız var. Bu token’a ulaşmak için:
https://expo.dev/settings/access-tokens adresine gidiyoruz.
Create Token diyoruz.
Token’ımıza isim veriyoruz. Ben gh-actions-token ismini verdim.
Sonrasında elde ettiğimiz token’ı repomuza eklemeliyiz.
Repoya gidip ayarlarda settings -> secrets -> actions kısmında token’ımızı ekliyoruz.
İsmini EXPO_TOKEN yapmalıyız çünkü update.yml dosyamızda o isimle erişeceğiz.
Güncellemelerimizi yayınladık, şimdi test edecek kişiler için önizlemeler yayınlayacağız, bunları da GitHub Actions üzerinden yapıyor olacağız.
Yine daha önceki workflow dosyamızda olduğu gibi, .github/workflows/preview.yml dosyamızı yaratalım.
İçeriğini bu şekilde girelim.
Yine update.yml sürecine benziyor olsa da o süreçten farklı olarak bu taraftaki işlemi her pull request açıldığında veya PR içerisine yeni bir push geldiğinde yapıyoruz. EAS Update, bu workflow’un çıktısı olarak ilgili PR içerisine QR kod ve genel bilgileri veren bir yorum atacak.
Ana ekranımızdaki yazıyı değişme gibi bir düzenleme yapacağımızı varsayalım. Yeni bir branch açıp oluşturduğumuz workflow’ları deneyelim.
fix/home-menu-text branch’inden main’e PR’ımızı açıyoruz ve oluşturduğumuz workflow’lar anında çalışıyor.
EAS Update Çıktısı ✨
Çalışan Joblar ✨
Bittiğinde ise Expo bize uygulamamızın PR içindeki değişikliklerle güncellenmiş versiyonunu oluşturuyor ve PR’a yorum olarak iletiyor. QR olarak okuttuğumuzda ise Expo Go uygulaması üzerinden çıktımızı görebiliyoruz.
QR kod tarafından Expo Go’ya yönlendirildik
Continue diyoruz.
Expo Go üzerinde eas-testing-app
Geliştirme ve test süreçlerimizi bu şekilde EAS servislerini kullanarak iyileştirdik. Bu sürecin sonunda tüm takımımızla ve test ekibimizle paylaşabileceğimiz build’lerimiz oldu. Ayrıca bu build’lere ulaşıp kurulum ve test aşamalarına dair bilgi edinebileceğimiz kolay kullanıma sahip bir panelimiz de olmuş oldu.
Geliştirme sürecimizden sonra ise yayınlama işlemleri için EAS Submit servislerini kullanabiliriz. EAS Submit’i, yayınlama süreçlerimizi kolaylaştıran ve otomatize edebilen bir servis olarak tanımlayabiliriz.
Referans olarak aşağıdaki dökümanı takip ederek siz de projelerinize EAS Submit servisini entegre edebilirsiniz.
Okuduğunuz için teşekkürler, gelecek yazılarımızda görüşmek üzere 🙌
React Native
Expo
Mobile App Development
CI CD Pipeline
Barbaros Yıldırım
Front-End Developer