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.swiftkullanı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.xcframeworksunar - Tüm CocoaPods artifactlarını (
.podspecdosyaları,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:
| Dilim | Mimari | Açıklama |
|---|---|---|
ios-arm64 | arm64 | iOS fiziksel cihazlar |
ios-arm64_x86_64-simulator | arm64 + x86_64 | iOS Simülatör (evrensel) |
macos-arm64_x86_64 | arm64 + x86_64 | macOS (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.6Eklentinin 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/DerivedDataPaketleri çözümleyin
Xcode'da File → Packages → Resolve Package Versions seçeneğine gidin ya da şunu çalıştırın:
flutter pub getDerleyin ve doğrulayın
Her şeyin çalıştığını onaylamak için uygulamanızı simülatörde veya cihazda çalıştırın:
flutter runSon Güncelleme