iOS

CocoaPods ile Kütüphane Yönetimi

CocoaPods, Swift ve Objective-C ile yazılmış Cocoa Projeleri (iOS, OSX işletim sistemleri için) için hazırlanmış bir bağımlılık yönetim aracıdır. Bir başka deyişle, bu platformlar için yazılmış üçüncü parti kütüphaneleri, projeye dâhil etmek...

CocoaPods, Swift ve Objective-C ile yazılmış Cocoa Projeleri (iOS, OSX işletim sistemleri için) için hazırlanmış bir bağımlılık yönetim aracıdır. Bir başka deyişle, bu platformlar için yazılmış üçüncü parti kütüphaneleri, projeye dâhil etmek geliştirilmiş bir araçtır. Artık GitHub ve benzeri kod depolarında Cocoa platformu için bulunan bir kütüphane kullanmak istersek, README.md kısmında CocoaPods aracılığıyla bunu nasıl kullanabileceğiniz yönünde bir yönerge bulunuyor. Java, Android platformlarında bulunan Maven, Gradle gibi yapılara bağımlılık enjeksiyonu yönünden çok benziyor.

Şimdi CocoaPods'u bilgisayarımıza nasıl yükleyeceğimize bakalım. Bilindiği gibi Cocoa projelerini oluşturabilmek için OSX işletim sistemine ihtiyacımız var. OSX işletim sistemi üzerinde Terminali açıp aşağıdaki komutu girin:

sudo gem install cocoapods

Kodun girilmesinin ardından bize bilgisayarın root parolası sorulacak. Root parolasını girin ve yüklenmesini bekleyin (Bu işlem biraz uzun sürebilir). Aşağıdaki görseldekine benzer bir çıktı almanız gerekiyor:

CocoaPods'u yan modülleriyle birlikte Mac OS X işletimi üzerine yüklemiş oluyoruz. Daha sonra projemizde nasıl kullanacağımıza bir göz atalım. XCode üzerinde yeni bir proje açalım. Dilerseniz siz, mevcut bir projenizi de açabilirsiniz.

Ben yukarıdaki gördüğünüz şekilde bir proje oluşturdum. Daha sonra Terminal üzerinde projemizin bulunduğu dizine "cd" komutu ile geçmemiz gerekiyor.

Hemen sonrasında "pod init" komutunu uyguluyoruz. Herhangi bir cevap dönmeden alt satıra geçilecek. Projemizin altında "Podfile" isimli uzantısız bir dosya oluştuğunu göreceksiniz.

Dosyaya sağ tıklayıp herhangi bir metin editörü ile açıyoruz ve aşağıdaki görseldeki hale getiriyoruz.

"do" ve "end" satırları arasına kullanacağımız kütüphanelerin isimlerini yazıyoruz. Üçüncü parti kütüphane geliştiricileri kütüphane isimlerini GitHub sayfalarına yazıyor. Dilerseniz kütüphane isimlerine CocoaPods.org adresinden de erişebilirsiniz.

Kütüphane isminin yanına "2.5" vb. bir ibareyle kütüphanenin belli bir sürümünü kullanmak istediğinizi belirtebilirsiniz. Eğer bir sürüm numarası belirtmezseniz, CocoaPods'a yüklenen en son sürüm projenize dâhil edilecek. Dolayısıyla hazırlayacağınız dosyanın şu şekilde olması yeterli:

target 'GelecegiYazanlarCocoaPods' do
  pod 'AFNetworking'
  pod 'ORStackView'
end

Podfile'ı bu şekilde düzenledikten sonra, bu kütüphanelerin projeye dâhil edilmesi için "pod install" satırını çağırıyoruz.

Normalde var olan XCode projelerini ".xcodeproj" uzantılı dosyaya tıklayarak açıyoruz. CocoaPods uzantısı attıktan sonra proje yapısı değişiyor ve "Workspace" yapısına geçiyor. Uygulamayı projenin içerisine ".xcworkspace" uzantısı ile oluşan dosyadan açmamız gerekiyor.

Projemizi tekrar açtıktan sonra, sol menüdeki Proje Structure ekranında aşağıdaki şekilde bir proje yapısı oluşacak:

Gördüğünüz üzere Pods klasörü altında Podfile içerisine yazdığımız tüm kütüphaneler indirilmiş durumda. Artık projenizde bu kütüphaneleri kullanabilirsiniz. Eğer projeniz Objective-C projesi ise ve indirdiğiniz kütüphane de Objective-C ile yazıldıysa, klasik içe aktarma (import) yöntemini kullanıyoruz.

#import <AFNetworking/AFNetworking.h>

Projemiz Swift projesi ise, örneğin Objective-C ile yazılmış AFNetworking kütüphanesini projemizde kullanabilmek için Bridging-Header isimli yapıyı kullanmamız gerekiyor. Objective-C, kütüphane ile projemiz arasında bir köprü oluşturuyor. Aslında bu, Bridging-Header yapısı Objective-C dili ile Swift dilini aynı projede koşturmak için geliştirilmiş bir yapıdır.

Bridging-Header yapısı kullanabilmek için projemize sağ tıklayıp "New File" düğmesine basıyoruz ve gelen menüden "Header file" seçeneğini seçiyoruz.

Dosyanın ismini "Bridging-Header.h" olarak belirliyoruz. Daha sonra projenin Build Settings sekmesinden "Swift Compiler - Code Generation" başlığını buluyoruz.

Yukarıdaki görseldeki gibi "Objective-C Bridging Header" kısmına oluşturduğumuz header dosyasının ismini girmemiz gerekiyor.

En son hali yukarıdaki şekilde olacak. Kullanacağımız kütüphaneyi Bridging-Header.h dosyasına import ediyoruz.

#import "AFNetworking.h" 
#import "ORStackView.h"

Bundan sonra proje içerisinde AFNetworkingi ve diğer kütüphaneyi rahatlıkla kullanabilirsiniz.

Peki, Podfile dosyasının içerisine yeni kütüphaneler ekledik, şimdi ne yapmamız gerekiyor? Terminal ile projenin içine gidip "pod update" komutunu çağırmamız yeterli.