Isar Plus
Tarifler

SPM Geçişi

isar_plus_flutter_libs'in CocoaPods'tan Swift Package Manager'a geçişi ve birleşik Darwin yapısı

SPM Geçiş Rehberi

Bu belge, isar_plus_flutter_libs eklentisinin CocoaPods'tan Swift Package Manager'a (SPM) geçişini ve iOS ile macOS için birleşik Darwin yapısının kullanıma alınmasını açıklar.

CocoaPods kullanan bir sürümden yükseltme yapıyorsanız CocoaPods'tan Yükseltme bölümündeki adımları izleyin.

Genel Bakış

Bu geçişten önce eklenti, iOS ve macOS için ayrı CocoaPods podspec dosyaları ve her platform için farklı native kaynak dizinleri kullanıyordu. Yeni yapı:

  • Eklenti kökünde SPM yapılandırması için tek bir Package.swift kullanır
  • Tüm Darwin (iOS + macOS) native kaynak kodunu darwin/Classes/ altında paylaşır
  • iOS cihaz, iOS simülatör ve macOS dilimlerini içeren birleşik bir IsarPlusCore.xcframework sunar
  • Tüm CocoaPods artifactlarını (.podspec dosyaları, Podfile, Pods/ dizinleri) kaldırır

Yeni Darwin Paylaşımlı Yapısı

packages/isar_plus_flutter_libs/
├── darwin/
│   └── Classes/
│       ├── binding.h                       ← FFI bildirimleri (paylaşımlı)
│       └── IsarPlusFlutterLibsPlugin.swift ← Birleşik eklenti (iOS + macOS)
├── Package.swift                           ← SPM manifest
└── pubspec.yaml                            ← Flutter eklenti yapılandırması

darwin/Classes/ dizini, tüm Apple platform native kodunun tek kaynağıdır. Platforma özgü importlar (UIKit ve Cocoa) Swift koşullu derleme direktifleriyle yönetilir (#if os(iOS) / #elseif os(macOS)).

Birleşik XCFramework Yapısı

Native Isar Core kütüphanesi, üç dilim içeren tek bir IsarPlusCore.xcframework olarak dağıtılır:

DilimMimariAçıklama
ios-arm64arm64iOS fiziksel cihazlar
ios-arm64_x86_64-simulatorarm64 + x86_64iOS Simülatör (evrensel)
macos-arm64_x86_64arm64 + x86_64macOS (Apple Silicon + Intel)

Tüm dilimler statik arşiv (.a) kullanır; bu SPM vendored binary desteği için zorunludur. macOS dilimi artık .dylib değildir.

Kurulum ve Yapılandırma

Yeni Projeler

Yeni projeler için özel bir kurulum gerekmez. pubspec.yaml dosyanıza bağımlılığı ekleyin; Flutter araçları eklentiyi SPM üzerinden otomatik olarak çözümler:

dependencies:
  isar_plus: ^1.2.6
  isar_plus_flutter_libs: ^1.2.6

Eklentinin pubspec.yaml dosyasında sharedDarwinSource: true ayarlandığında Flutter, SPM çözümlemesini otomatik olarak yönetir. Manuel Xcode yapılandırması gerekmez.

CocoaPods'tan Yükseltme

Çoğu Flutter projesi için, Swift Package Manager'a geçiş yapmak uygulama kodunuzu değiştirmenizi gerektirmez; ancak projenizde özel Xcode yapılandırmaları veya CocoaPods kurulum komut dosyalarını yoğun olarak kullanan bağımlılıklar varsa durum farklı olabilir. Eklentinin en son sürümüne güncellemek, Apple platformlarındaki temel bağımlılık yöneticinizi otomatik olarak Swift Package Manager'a geçirecektir.

CocoaPods aracılığıyla diğer Flutter dışı bağımlılıkları yönetiyorsanız, bunları manuel olarak taşımanız veya saklamanız gerekebilir. CocoaPods'u projenizden tamamen kaldırmak istiyorsanız şu adımları izleyin:

CocoaPods artifactlarını kaldırın

Xcode kapalıyken, CocoaPods bağımlılıklarınızı kaldırın ve oluşturulan çalışma alanını (workspace) silin:

cd ios
pod deintegrate
rm -rf Podfile Podfile.lock Pods Runner.xcworkspace
cd ..

(macos dizini için de geçerliyse tekrarlayın).

Derived data'yı temizleyin

Xcode'da Product → Clean Build Folder (⇧⌘K) seçeneğine gidin ya da DerivedData'yı manuel olarak silin:

rm -rf ~/Library/Developer/Xcode/DerivedData

Paketleri çözümleyin

Xcode'da File → Packages → Resolve Package Versions seçeneğine gidin ya da şunu çalıştırın:

flutter pub get

Derleyin ve doğrulayın

Her şeyin çalıştığını onaylamak için uygulamanızı simülatörde veya cihazda çalıştırın:

flutter run

Son Güncelleme

İçindekiler