· Publishing · 6 dk okuma

fastlane olmadan mağaza listeni yayınlamak

fastlane olmadan mağaza listeni yayınlamak
TL;DR. fastlane'in deliver ve supply komutları metadata'nı, ekran görüntülerini ve binary'ni komut satırından her iki mağazaya da gönderir — ücretsiz, açık kaynak ve CI'a bağlarsan hep güncel. Bedeli, o pipeline'ı birinin kurup canlı tutması: Ruby, Xcode veya Gradle, bir Fastfile ve UI-test bakımı. Pipeline çalıştırmak istemiyorsan kodsuz yollar şunlar: mağaza web konsolları, doğrudan mağaza API'leri veya listeni senin için taslak hâline getiren bir araç. Mokbi gerçekten yayınlayan kodsuz yoldur: ekran görüntülerini ve öne çıkan görselini tasarlar, tüm listeyi yazıp 50 dile çevirir ve Play Developer API üzerinden doğrudan Google Play'e gönderirken App Store sürümünü App Store Connect'te senin göndermen için hazırlar. Ruby yok, Xcode yok, UI testi yok.

fastlane'in varsayılan cevap olmasının bir sebebi var. Ücretsiz, MIT lisanslı bir araç seti ve deliver aksiyonu (namıdiğer upload_to_app_store) ekran görüntülerini, uygulama önizleme videolarını, metadata'yı ve binary'yi tek komutla App Store Connect'e yüklüyor. Android tarafında supply (namıdiğer upload_to_play_store) aynısını Google Play için yapıyor — metadata, ekran görüntüleri ve APK ya da app bundle. İkisini de CI'dan çalıştırırsan listen her sürümde yeniden oluşur, uygulamadan asla sapmaz.

Yani dürüst soru "fastlane iyi mi" değil — iyi zaten. Soru şu: onu iyi yapan pipeline'ın sahibi olmak mı istiyorsun, yoksa listeyi pipeline olmadan mı güncellemek istiyorsun.

deliver ve supply gerçekte ne yapıyor

İkisi de resmi mağaza API'lerinin sarmalayıcısı. Perde arkasında fastlane, senin de kendi başına yapabileceğin çağrıları yapıyor.

  • deliver (iOS). Uygulama adı, açıklama, anahtar kelimeler, sürüm notları, URL'ler, kategoriler ve inceleme bilgilerini; ayrıca yerelleştirilmiş ekran görüntüleri ve önizleme videolarını yükler. Binary, Apple'ın iTMSTransporter'ı üzerinden; metadata ise App Store Connect API üzerinden gider. Yüklemenin ardından incelemeye de gönderebilir.
  • supply (Android). Metadata, ekran görüntüleri ve APK ya da AAB'yi Google Play'e yükler; bir track seçer ve build'leri yükseltir. Dikkat edilecek nokta: yüklenen ekran görüntüleri bir dil için mevcut olanlara eklenmez, onların yerini alır.

İkisi de API anahtarlarıyla kimlik doğrular — Apple için App Store Connect API anahtarı, Google için bir service-account JSON'u — yani bir kez yapılandırıldıklarında CI'da başında kimse olmadan çalışırlar. Cazibesi tam olarak bu: metadata ve ekran görüntüleri kod olarak, repo'nda versiyonlanmış, her build'de gönderiliyor.

fastlane'in gerçek maliyeti

fastlane kurmak ve çalıştırmak ücretsiz. Bedel kurulum ve bakım, ve bu mühendislik zamanıyla ödeniyor.

  • Bakımı gereken bir runtime. fastlane bir Ruby araç zinciri (Ruby 3.0+), genelde Bundler ile yönetilir. iOS işi Mac'te Xcode gerektirir; Android ise Gradle tarafını. Bunlar kurulması ve güncel tutulması gereken gerçek makineler.
  • Yazılması gereken config dosyaları. Bir Fastfile lane'lerini tanımlar; bir Deliverfile ya da Android metadata klasörü liste detaylarını tutar. İlk çalışan sürümü doğru kurmak genelde bir iki gün sürer.
  • Ayağa kaldırılması gereken CI. Otomasyon ancak bir pipeline içinde karşılığını verir; bu da API anahtarları, imzalama sırları ve yeşil tutulan bir build runner demek.
  • Ekran görüntüsü yakalama bakımı, kullanıyorsan. fastlane'in snapshot'ı, her dil için ekran görüntüsü yakalamak üzere simülatörde UI testleri çalıştırır. Bu testler kırılgan: yaygın bir gözlem, kurulumun birkaç ay iyi çalıştığı, sonra bir UI değişikliğinin akışı bozduğu ve test kodunun yeni durumlara göre yeniden yazılması gerektiği yönünde. snapshot varsayılan olarak sorunlu koşuları tekrar dener; bu, ağ ve veri kaynaklı belirsizliği düzeltmek yerine üstünü örter. Ve ham çıktının başlığı ya da arka planı yok — takımlar tasarımı genelde ayrı bir araçla tamamlıyor zaten.

Bunların hiçbiri araca eleştiri değil. Dürüst bir takas bu: fastlane tekrar eden manuel bir işi koda dönüştürüyor, sen de karşılığında kodun bakımını yapıyorsun. Yayın otomasyonunun sahibi olan bir mühendisle her hafta yayın yapan bir takım için bu iyi bir anlaşma. Yılda birkaç kez listesini güncelleyen tek başına bir geliştirici ya da PM için pipeline'ı canlı tutmak, kazandırdığından fazlasına mal olabilir.

fastlane olmadan listeni güncellemek

fastlane'i atlarsan yine de metadata ve ekran görüntülerini mağazalara ulaştırmanın üç yolu var.

1. Mağaza web konsolları

En sade yol. App Store Connect'te her yerelleştirmeyi elle düzenler, ekran görüntülerini görüntü boyutu alanlarına bırakırsın; Google Play Console'da mağaza listesini dil bazında düzenler, ekran görüntülerini oradan yüklersin. Kod yok, anahtar yok, bakılacak bir şey yok — tıklarsın, olur. Dezavantajı tamamen manuel olması ve bunu birçok dilde tek tek yapmanın yavaş ve hataya açık olması. Bir iki dil için sorun değil; 20 dilde yorucu.

2. Mağaza API'leri, doğrudan

Her iki mağaza da fastlane'in çağırdığı aynı API'leri açıyor, yani fastlane'in Ruby yığınını benimsemeden bunlara karşı kod yazabilirsin. Apple'ın App Store Connect API'si, kısa ömürlü bir JWT ile (ES256, kendi anahtarınla imzalanmış) kimlik doğrulayan bir REST API'dir; ekran görüntüsü setleri oluşturmak, görüntü byte'larını ayırıp yüklemek ve metadata'yı düzeltmek için uç noktalar sunar. Google'ın Play Developer API'si bir "edits" modeli kullanır — bir edit açarsın, listeleri ve görüntüleri değiştirirsin, sonra commit edersin. Bu sana tam kontrol verir ve özel bir dahili panele uyar, ama artık bu entegrasyonu kendin yazıp bakımını yapıyorsun demektir. Tam bir fastlane pipeline'ından daha küçük bir taahhüt, ama sıfır değil.

3. Listeyi taslak hâline getiren yönetilen bir araç

Diğer kodsuz yol, listeni senin için üreten bir araç; geriye kalan tek şey onu mağazaya ulaştırmak. Takas burada tersine döner: pipeline'ın sahibi bir mühendis yerine, listenin sahibi doğrudan bir PM ya da tasarımcı olur, tarayıcıda. CI otomasyonunu, hiç mühendise ihtiyaç duymamakla takas ediyorsun.

Mokbi nereye oturuyor — dürüstçe

Mokbi, fastlane'in CI hikâyesinin yerini almaya çalışmıyor. Amacın her build'de insan müdahalesi olmadan yeniden oluşan ekran görüntüleriyse doğru araç fastlane'dir ve ücretsizdir. Biz farklı bir durum için varız: Ruby'ye, Xcode'a, bir Fastfile'a ya da UI testine dokunmadan cilalı bir liste yayınlamak isteyen kişi için.

Tarayıcıda ekran görüntülerini tasarlar, mağaza metnini taslak hâline getirir ve tüm listeyi 50 dile çevirirsin — simülatör yok, CI yok, kod yok. Bir tasarımcı ya da PM tüm pazarlama yüzeyinin baştan sona sahibi olabilir.

İşte son adım ve Mokbi onu da karşılıyor. Ekran görüntülerini ve öne çıkan görseli tasarlar, tüm listeyi yazıp 50 dile çevirir, ardından sonucu Play Developer API üzerinden doğrudan Google Play'e gönderir ve App Store sürümünü App Store Connect'te senin Gönder'e basman için hazırlar — bu son Gönder adımını ve incelemeyi Apple'ın kendisi zorunlu kılar, bu Apple'ın kuralı, bizim tarafımızda bir eksiklik değil. fastlane'in çağırdığı aynı uç noktalar, pipeline'sız.

Hangisini ne zaman seçmeli

  • Her hafta yayın yapıyor, bir mühendisin var, sıfır sapma mı istiyorsun? fastlane. Ücretsiz, otomatik ve ekran görüntülerini metadata'yla birlikte uygulamayla senkron tutuyor. Hiçbir şey buna denk gelmiyor.
  • Yılda birkaç kez liste güncelliyorsun, ayıracak CI'ın yok mu? Web konsolu ya da listeyi taslak hâline getiren bir araç. Bu sıklıkta pipeline'ın bakımı buna değmez.
  • Programatik kontrol istiyorsun ama fastlane'in yığınını istemiyor musun? App Store Connect ve Play Developer API'lerini doğrudan çağır.
  • Bir tasarımcı ya da PM'in listenin birçok dilde sahibi olmasını mı istiyorsun? Tarayıcıda taslak hâline getir, çevir ve yayınla — Mokbi Google Play'e gönderir ve App Store sürümünü senin göndermen için hazırlar.

fastlane, ücretsiz ve otomatik yerleşik olma yerini hak ediyor. Kodsuz yol "daha iyi" değil — farklı bir takas: CI otomasyonundan vazgeçiyorsun, karşılığında bir listeyi güncellemek için kimse pipeline kurup gözetmek zorunda kalmıyor.

Sırada ne okumalı

Editörü aç →