XCode 15 ile SPM Paketi Oluşturmak

Hasan Ali Şişeci
Appcent
Published in
3 min readDec 14, 2023

Dakikalar içerisinde bir Swift package oluşturup GitHub’da paylaşmak ister misiniz? O zaman hadi başlayalım.

Apple, iOS ekosisteminde biz geliştiricilere geniş bir uygulama geliştirme ve dağıtım platformu sunuyor. Ancak, uygulama geliştirme sürecini kolaylaştırmak ve yönetmek için geliştiricilerin projelerine entegre edebileceği yeniden kullanılabilir kod veya bileşen koleksiyonları olarak Swift paketlerini sunar.

SPM (Swift Package Manager) Nedir?

Apple kendi özetiyle SPM, kodunuzu paylaşmayı ve başkalarının kodunu yeniden kullanmayı kolaylaştırmayı amaçlayan, kaynak kodu dağıtımını yönetmeyi sağlayan araçtır. SPM, Swift paketlerini derleme ve bağlama, bağımlılıkları yönetme, sürüm oluşturma ve dağıtım işlerini sizler için kolaylaştırıyor.

Peki bir SPM paketini Xcode ile nasıl oluşturabiliriz.

Paketi Oluşturmak

İlk olarak Xcode’u açtıktan sonra “File” kısmından “New” diyerek “Package” seçeneğini seçiyoruz.

Ardından açılan ekranda “Multiplatform” ve “Library” seçeneğini seçerek ilerliyoruz. Ardından paketimizin ismini belirtip, konumunu seçerek devam ediyoruz.

Bizi burada bir PackageDescription dosyası, bir Sources klasörü ve bir Tests klasörü karşılıyor. Ben paketimi hazırlarken test kısımıyla işim olmadığı için Tests klasörünü silerek başlayacağım işe. Tabii ki ardıdan PackageDescription dosyasını da düzenlememiz gerekiyor. Burada belirtilen .testTarget item’ını da targets dizisinin içerisinden siliyoruz.

Daha sonra yine PackageDescription içerisinde name parametresinden sonra yeni bir parametre ekliyorum. Bu parametre ile paketimin destek vereceği platformları ve bu platformlara ait spesifik versiyonları belirleyebiliyorum.

import PackageDescription

let package = Package(
name: "LinearBGPackageDemo",
platforms: [.iOS(.v16)],
products: [
.library(
name: "LinearBGPackageDemo",
targets: ["LinearBGPackageDemo"]),
],
targets: [
.target(
name: "LinearBGPackageDemo")
]
)

Burada

  • name: Paketin adı.
  • platform:Özel bir dağıtım hedefine sahip desteklenen platformların listesi.
  • products:Bu paketin müşterilerin kullanımına sunduğu ürünlerin listesi.
  • targets: Bu paketin parçası olan hedeflerin listesi.
  • Ayrıca burada package sabitini yaratırken defaultLocalization, pkgConfig, providers, dependencies, swiftLanguageVersions, cLanguageStandarts ve cxxLanguageStandarts gibi diğer değerleride belirtebilirsiniz.

Bu işlemlerin ardından hazırlamak istediğimiz paketin kodlarını yazmaya geçebiliriz. Ben örnek olması için ve bir projede’de gösterebilmek adına SwiftUI ile view’ların arkaplanına direkt olarak LinearGradient verebildiğim bir paket hazırlayacağım.

Bunun için oldukça kısa bir kodum var. Bu kodda ilk olarak bir ViewModifier yaratıyorum. Bu modifier ile content’e bir background verilmesini sağlıyorum. Ardından bir view extension yazarak direkt olarak bu modifier’ı view’a uyguladığım bir fonksiyon yazıyorum. Buradaki parametreleri başta set ediyorum (kullanıcının herhangi bir değer girmese de çalışması için).

Ayrıca burada sayfanızı hazırladıktan sonra hata alırsanız simulator olarak bir iOS cihaz seçmeyi unutmayın.

Örnek swift package’ımız için bu kadarı yeterli. Buradan sonrası için terminal üzerinden projenizin bulundugu dizine giderek git initdiyerek projemize .git dosyasını dahil ediyoruz ve ardından gerekli komutları girerek yeni bir repository oluşturarak dosyalarımızı remote’a pushluyoruz.

Daha sonra SwiftUI projemize giderek paketimizi github linkiyle projemize Package olarak ekliyoruz.

Ben yarattığım package’ı github’a yükledim ve url’sini alarak Xcode’daki projeme ekliyorum. https://github.com/hasanalisiseci/LinearBGPackageDemo

Ve ardından paketimizi import ederek yazdığımız function’ı view üzerinde kullanıyoruz.

Başarılı bir şekilde paketimizi oluşturup ve paketi projemiz içerisinde kullandık.

Gördüğünüz gibi bir package yaratmak Xcode ve Swift ile bu kadar kolay. Başka bir yazıda görüşmek üzere. İyi kodlamalar 🙌🏻

--

--