DEV Community

Cover image for Flutter App IOS Build ­čĺź ­čîî ÔťĘ
G├╝lsen ­čŽő
G├╝lsen ­čŽő

Posted on

Flutter App IOS Build ­čĺź ­čîî ÔťĘ

IOS Build:

Uygulaman─▒z─▒ olu┼čturmak ve yay─▒nlamak i├žin Xcode gereklidir. Bu k─▒lavuzu takip etmek i├žin macOS ├žal─▒┼čt─▒ran bir cihaz kullanmal─▒s─▒n─▒z.

Ad─▒mlar:
1.) BundleId olu┼čturma (Geli┼čtirici hesab─▒ndan)
2.) Uygulamay─▒ App Store Connect'de kaydetmek.
3.) Xcode ya da Codemagic CLI '─▒ kullanarak build ar┼čivi olu┼čturma.
4.) Uygulamay─▒ App Store da yay─▒nlama.

Uygulaman─▒z─▒ App Store Connect'e kaydedin:
Uygulaman─▒z─▒n ya┼čam d├Âng├╝s├╝n├╝ App Store Connect'te (eski ad─▒yla iTunes Connect) y├Ânetin. App Store ve TestFlight'ta uygulama ad─▒n─▒z─▒ ve a├ž─▒klaman─▒z─▒ tan─▒mlar, ekran g├Âr├╝nt├╝leri ekler, fiyatland─▒rmay─▒ ayarlar ve s├╝r├╝mleri y├Ânetirsiniz.

Uygulama kaydetmek iki ad─▒mdan olu┼čur:
1.) Benzersiz(unique) bir Bundle ID kaydetme.
2.) App Store Connect'te bir uygulama kayd─▒ olu┼čturma.

Bir Bundle ID Kaydedin:

Her iOS uygulamas─▒, Apple'a kay─▒tl─▒ benzersiz bir tan─▒mlay─▒c─▒ olan Bundle ID ile ili┼čkilendirilir.

ÔÇó Geli┼čtirici hesab─▒n─▒z─▒n App IDs sayfas─▒n─▒ a├ž─▒n.
ÔÇó Yeni bir Bundle ID olu┼čturmak i├žin + ├Â─česine t─▒klay─▒n.
ÔÇó Bir uygulama ad─▒ girin, Explicit App ID'yi se├žin ve bir ID girin.
ÔÇó Uygulaman─▒z─▒n kulland─▒─č─▒ hizmetleri se├žin ve ard─▒ndan Continue'a t─▒klay─▒n.
ÔÇó Sonraki sayfada, ayr─▒nt─▒lar─▒ onaylay─▒n ve Bundle ID'nizi kaydetmek i├žin Register'a t─▒klay─▒n.

Bir Uygulamay─▒ App Store Connect'e kaydetmek i├žin:

ÔÇó Taray─▒c─▒n─▒zda App Store Connect'i a├ž─▒n.
ÔÇó App Store Connect a├ž─▒l─▒┼č sayfas─▒nda My Apps'e t─▒klay─▒n.
ÔÇó My Apps sayfas─▒n─▒n sol ├╝st k├Â┼česindeki + butonuna t─▒klay─▒n, ard─▒ndan New App'i se├žin.
ÔÇó A├ž─▒lan forma uygulaman─▒z─▒n ayr─▒nt─▒lar─▒n─▒ girin. Platforms b├Âl├╝m├╝nde iOS'un i┼čaretli oldu─čundan emin olun. Flutter ┼ču anda tvOS'u desteklemedi─činden, bu onay kutusunu i┼čaretlemeden b─▒rak─▒n. Create'e t─▒klay─▒n.
ÔÇó Uygulaman─▒z─▒n application details alan─▒na gidin ve sidebar'dan App Information'n─▒ se├žin.
ÔÇó General Information b├Âl├╝m├╝nde, ├Ânceki ad─▒mda kaydetti─činiz Bundle ID'yi se├žin.

Xcode proje ayarlar─▒n─▒z─▒ g├Âzden ge├žirin:

Bu ad─▒m, Xcode ├žal─▒┼čma alan─▒ndaki(workspace) en ├Ânemli ayarlar─▒n g├Âzden ge├žirilmesini kapsar.

ÔÇó Xcode'da targetÔÇÖs settings'e gidin:
ÔÇó Xcode'da, uygulaman─▒z─▒n ios klas├Âr├╝nde Runner.xcworkspace'i a├ž─▒n.
ÔÇó Uygulama ayarlar─▒n─▒z─▒ g├Âr├╝nt├╝lemek i├žin Xcode proje gezgininde Runner projesini se├žin. Ard─▒ndan, sidebar'da Runner alan─▒n─▒ se├žin. General sekmesini se├žin.

En ├Ânemli ayarlar─▒ do─črulay─▒n:

Identity b├Âl├╝m├╝nde:

Display Name : Uygulaman─▒z─▒n g├Âr├╝nen ad─▒.

Bundle Identifier : App Store Connect'te kaydetti─činiz App ID.

Signing & Capabilities b├Âl├╝m├╝nde:

Automatically manage signing: Xcode'un uygulama imzalama ve sa─člamay─▒ otomatik olarak y├Ânetmesi gerekip gerekmedi─či. Bu, varsay─▒lan olarak true'dur ve ├žo─ču uygulama i├žin yeterli olacakt─▒r.

Team: Kay─▒tl─▒ Apple Developer hesab─▒n─▒zla ili┼čkili ekibi se├žin. Gerekirse, Add Account, ├Â─česini se├žin, ard─▒ndan bu ayar─▒ g├╝ncelleyin.

Build Settings b├Âl├╝m├╝nde:

iOS Deployment Target : Uygulaman─▒z─▒n destekledi─či minimum iOS s├╝r├╝m├╝. Flutter, iOS 9.0 ve sonraki s├╝r├╝mleri destekler. Uygulaman─▒z veya eklentileriniz, iOS 9'dan daha yeni API'leri kullanan Objective-C veya Swift kodu i├žeriyorsa, bu ayar─▒ gereken en y├╝ksek s├╝r├╝me g├╝ncelleyin.

Uygulama da─č─▒t─▒m s├╝r├╝m├╝n├╝ g├╝ncelleme:

Xcode projenizde Deployment Target alan─▒n─▒ de─či┼čtirdiyseniz, Flutter uygulaman─▒zda ios/Flutter/AppframeworkInfo.plist'i a├ž─▒n ve MinimumOSVersion de─čerini e┼čle┼čecek ┼čekilde g├╝ncelleyin.

Uygulama s├╝r├╝m numaras─▒n─▒ g├╝ncelleme:

Uygulaman─▒n varsay─▒lan s├╝r├╝m numaras─▒ 1.0.0'd─▒r. G├╝ncellemek i├žin pubspec.yaml dosyas─▒na gidin ve a┼ča─č─▒daki sat─▒r─▒ g├╝ncelleyin:

version: 1.0.0+1

S├╝r├╝m numaras─▒, yukar─▒daki ├Ârnekte 1.0.0 gibi noktalarla ayr─▒lm─▒┼č ├╝├ž say─▒d─▒r ve ard─▒ndan yukar─▒daki ├Ârnekte 1 gibi iste─če ba─čl─▒ bir build number gelir ve + ile ayr─▒l─▒r.

Flutter'─▒n derlemesinde hem version hem de build number, s─▒ras─▒yla --build-name ve --build-number belirtilerek ge├žersiz k─▒l─▒nabilir.

iOS'ta build-name CFBundleShortVersionString'i, build-number CFBundleVersion'─▒ kullan─▒r.

Bir app icon ekleyin:
Xcode project navigator'da Runner klas├Âr├╝nde Assets.xcassets ├Â─česini se├žin. Placeholder iconlar─▒n─▒ kendi uygulama simgelerinizle g├╝ncelleyin.

Uygulaman─▒z─▒ flutter run kullanarak ├žal─▒┼čt─▒r─▒n ve simgenin de─či┼čtirildi─čini do─črulay─▒n.

Xcode ile bir build ar┼čivi olu┼čturun

Uygulaman─▒z─▒ App Store veya TestFlight'taki kullan─▒c─▒lara g├Ândermeye haz─▒r oldu─čunuzda, bir release build (s├╝r├╝m derlemesi) haz─▒rlaman─▒z gerekir.

Xcode'da uygulama s├╝r├╝m├╝n├╝ yap─▒land─▒r─▒n ve ┼čunu olu┼čturun:

  1. Xcode'da, uygulaman─▒z─▒n ios klas├Âr├╝nde Runner.xcworkspace'i a├ž─▒n.

  2. Xcode proje gezgininde Runner'─▒ se├žin, ard─▒ndan ayarlar g├Âr├╝n├╝m├╝ kenar ├žubu─čunda Runner hedefini se├žin.

  3. Identity b├Âl├╝m├╝nde, Version'u, yay─▒nlamak istedi─činiz kullan─▒c─▒ya y├Ânelik version numaras─▒na g├╝ncelleyin.

  4. Identity b├Âl├╝m├╝nde, Build identifier'─▒ App Store Connect'te bu build'i izlemek i├žin kullan─▒lan unique bir build number'la g├╝ncelleyin. Her y├╝kleme benzersiz bir build number gerektirir.

Son olarak, bir build archive olu┼čturun ve bunu App Store Connect'e y├╝kleyin:

1.Bir build archive olu┼čturmak i├žin flutter build ipa 'y─▒ ├žal─▒┼čt─▒r─▒n.

  1. Xcode'da build/ios/archive/MyApp.xcarchive dosyas─▒n─▒ a├ž─▒n.

3.Validate App button'una t─▒klay─▒n. Herhangi bir sorun bildirilirse, bunlar─▒ ele al─▒n ve ba┼čka bir build olu┼čturun. Bir ar┼čiv y├╝kleyene kadar ayn─▒ build ID'i yeniden kullanabilirsiniz.

  1. Ar┼čiv ba┼čar─▒yla do─čruland─▒ktan sonra, Distribute App'e t─▒klay─▒n. Derlemenizin durumunu, uygulaman─▒z─▒n App Store Connect'teki appÔÇÖs details sayfas─▒n─▒n Activities sekmesinden takip edebilirsiniz.

Not: Uygulaman─▒z─▒ Distribute App'in sonunda d─▒┼ča aktard─▒─č─▒n─▒zda, Xcode uygulaman─▒z─▒n IPA's─▒n─▒ ve bir ExportOptions.plist dosyas─▒n─▒ i├žeren bir dizin olu┼čturur.

Flutter build ipa --export-options-plist=path/to/ExportOptions.plist 'i ├žal─▒┼čt─▒rarak Xcode'u ba┼člatmadan ayn─▒ se├ženeklerle yeni IPA'lar olu┼čturabilirsiniz.

30 dakika i├žinde, build'inizin do─čruland─▒─č─▒n─▒ ve TestFlight'ta test kullan─▒c─▒lar─▒na sunulmaya haz─▒r oldu─čunu bildiren bir e-posta alacaks─▒n─▒z. Bu noktada, TestFlight'ta yay─▒nlamay─▒ veya devam edip uygulaman─▒z─▒ App Store'da yay─▒nlamay─▒ se├žebilirsiniz.

Codemagic CLI ara├žlar─▒yla build ar┼čiv olu┼čturmak i├žin:

Bu ad─▒m, bir build ar┼čiv olu┼čturmay─▒ ve Flutter proje dizinindeki bir terminalde y├╝r├╝t├╝len Flutter derleme komutlar─▒n─▒ ve Codemagic CLI Ara├žlar─▒n─▒ kullanarak derlemenizi App Store Connect'e y├╝klemeyi kapsar. Bu, login keychain'den izole edilmi┼č ge├žici bir keychain'le da─č─▒t─▒m sertifikalar─▒n─▒n (distribution certificates) tam denetimine sahip bir build ar┼čivi olu┼čturman─▒za olanak tan─▒r.

  1. Codemagic CLI ara├žlar─▒n─▒ kurun:
    pip3 install codemagic-cli-tools

  2. App Store Connect ile i┼člemleri otomatikle┼čtirmek i├žin App Manager eri┼čimi olan bir App Store Connect API Key olu┼čturman─▒z gerekir. Sonraki komutlar─▒ daha k─▒sa hale getirmek i├žin new key'den ┼ču ortam de─či┼čkenlerini ayarlay─▒n: issuer id, key id, and API key file.

export APP_STORE_CONNECT_ISSUER_ID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
export APP_STORE_CONNECT_KEY_IDENTIFIER=ABC1234567
export APP_STORE_CONNECT_PRIVATE_KEY=`cat /path/to/api/key/AuthKey_XXXYYYZZZ.p8`
Enter fullscreen mode Exit fullscreen mode
  1. Bir build ar┼čivini kodlamak ve paketlemek i├žin bir iOS Distribution sertifikas─▒n─▒ export etmeniz veya olu┼čturman─▒z gerekir.

Mevcut sertifikalar─▒n─▒z varsa, her sertifika i├žin a┼ča─č─▒daki komutu y├╝r├╝terek private key'i export edebilirsiniz:

openssl pkcs12 -in <certificate_name>.p12 -nodes -nocerts | openssl rsa -out cert_key
Enter fullscreen mode Exit fullscreen mode

Veya a┼ča─č─▒daki komutu uygulayarak yeni bir private key olu┼čturabilirsiniz:

ssh-keygen -t rsa -b 2048 -m PEM -f cert_key -q -N ""

Daha sonra, CLI ara├žlar─▒n─▒n private keyden otomatik olarak yeni bir iOS Da─č─▒t─▒m─▒ olu┼čturmas─▒n─▒ sa─člayabilirsiniz.

  1. Kod imzalama i├žin kullan─▒lacak yeni bir ge├žici keychain ayarlay─▒n: keychain initialize

daha sonra bunu ├žal─▒┼čt─▒r─▒n:
keychain use-login

Bu, makinenizdeki uygulamalarla ilgili olas─▒ kimlik do─črulama sorunlar─▒n─▒ ├Ânlemek i├žin login keychain'inizi (oturum a├žma anahtar zincirinizi) varsay─▒lan olarak ayarlar.

5. App Store Connect'ten kod imzalama dosyalar─▒n─▒ al─▒n:


app-store-connect fetch-signing-files $(xcode-project detect-bundle-id) \
    --platform IOS \
    --type IOS_APP_STORE \
    --certificate-key=@file:/path/to/cert_key \
    --create
Enter fullscreen mode Exit fullscreen mode

Burada cert_key, export edilen iOS Distribution certificate private key veya otomatik olarak yeni bir sertifika olu┼čturan yeni bir private keydir.Sertifika, App Store Connect'te yoksa ├Âzel anahtardan olu┼čturulacakt─▒r.

  1. Al─▒nan sertifikalar─▒ keychain'ize ekleyin:

    keychain add-certificates

  2. Getirilen kod imzalama profillerini kullanmak i├žin Xcode proje ayarlar─▒n─▒ g├╝ncelleyin:
    xcode-project use-profiles

  3. Flutter ba─č─▒ml─▒l─▒klar─▒n─▒ y├╝kleyin:
    flutter packages pub get

9.CocoaPods ba─č─▒ml─▒l─▒klar─▒n─▒ y├╝kleyin:

find . -name "Podfile" -execdir pod install \;

  1. Flutter'─▒ iOS projesini olu┼čturun:
flutter build ipa --release \
    --export-options-plist=$HOME/export_options.plist
Enter fullscreen mode Exit fullscreen mode

export_options.plist ├Â─česinin xcode-project use-profiles komutunun ├ž─▒kt─▒s─▒ oldu─čunu unutmay─▒n.

11.Uygulamay─▒ App Store Connect'te yay─▒nlay─▒n:

app-store-connect publish \
    --path $(find $(pwd) -name "*.ipa")
Enter fullscreen mode Exit fullscreen mode
  1. Daha ├Ânce de belirtildi─či gibi, makinenizdeki uygulamalarla ilgili kimlik do─črulama sorunlar─▒n─▒ ├Ânlemek i├žin login keychain'inizi (oturum a├žma anahtar zincirinizi) default olarak ayarlamay─▒ unutmay─▒n: keychain use-login

30 dakika i├žinde, yap─▒n─▒z─▒n do─čruland─▒─č─▒n─▒ ve TestFlight'ta test kullan─▒c─▒lar─▒na sunulmaya haz─▒r oldu─čunu bildiren bir e-posta alacaks─▒n─▒z. Bu noktada, TestFlight'ta yay─▒nlamay─▒ veya devam edip uygulaman─▒z─▒ App Store'da yay─▒nlamay─▒ se├žebilirsiniz.

Uygulaman─▒z─▒ TestFlight'ta yay─▒nlay─▒n:

TestFlight, geli┼čtiricilerin uygulamalar─▒n─▒ dahili ve harici test cihazlar─▒na aktarmalar─▒na olanak tan─▒r. Bu iste─če ba─čl─▒ ad─▒m, derlemenizi TestFlight'ta yay─▒nlamay─▒ kapsar.

  1. App Store Connect'te uygulaman─▒z─▒n application details sayfas─▒n─▒n TestFlight sekmesine gidin.

  2. Sidebar'dan Internal Testing i se├žin.

  3. Test kullan─▒c─▒lar─▒na yay─▒mlanacak derlemeyi(buildi) se├žin ve ard─▒ndan Save'e t─▒klay─▒n.

  4. Herhangi bir dahili test kullan─▒c─▒s─▒n─▒n e-posta adreslerini ekleyin. Sayfan─▒n ├╝st k─▒sm─▒ndaki a├ž─▒l─▒r men├╝den eri┼čilebilen App Store Connect'in Users and Roles sayfas─▒nda ek dahili kullan─▒c─▒lar ekleyebilirsiniz.

Uygulaman─▒z─▒ App Store'da yay─▒nlay─▒n:

  1. App Store Connect'te uygulaman─▒z─▒n application details sayfas─▒n─▒n sidebar'─▒ndan Pricing and Availability'i se├žin ve gerekli bilgileri tamamlay─▒n.

  2. Sidebar'dan status'├╝ se├žin. Bu, bu uygulaman─▒n ilk s├╝r├╝m├╝yse, status 1.0 Prepare for Submission (G├Ânderime Haz─▒rla)'d─▒r. T├╝m gerekli alanlar─▒ doldurun.

  3. Submit for Review'e t─▒klay─▒n.

Apple, uygulama inceleme s├╝reci tamamland─▒─č─▒nda sizi bilgilendirir. Uygulaman─▒z, Version Release b├Âl├╝m├╝nde belirtti─činiz talimatlara g├Âre yay─▒nlan─▒r.

resource

Discussion (0)