+4

Hướng dẫn cách tạo một Cocoapod

Các bạn chắc hẳn đã rất quen thuộc với khái niệm opensource cocoapod như Alamofire hay MBProgressHUD. Nhưng đôi khi bạn khó có thể tìm thấy một pod thoả mãn các chức năng mà bạn cần, hoặc bạn có thể muốn chia nhỏ một project thành các module nhỏ hơn và sử dụng lại các module đó ở các project khác. Cocoapod giúp bạn quản lý rất tốt các module này. Mình cũng đã có một project muốn đóng gói module kết nối mạng, và cocoapod như một công cụ quản lý nhanh nhất và tiện ích nhất cho mình. Hôm nay mình sẽ hướng dẫn các bạn tạo một Cocoa touch frameworkPods của chính bạn.

Mình sẽ demo luôn một ví dụ đơn giản: Có 1 class là kết nối mạng là FRNetwork, class này lấy thông tin json và xử lý lỗi, maintainance,..., sau đó trả về cho client. Mình sẽ đóng gói class này thành một Cocoapods để dùng cho các project khác nhau.

  1. Đầu tiên nếu bạn chưa bao giờ sử dụng cocoapod thì hay tham khảo tại đây https://guides.cocoapods.org/using/getting-started.html Mình không giới thiệu cách sử dụng cocoapods nữa, chủ yếu nói về cách tạo ra cocoapods của riêng mình.
  2. Tạo cocoa touch framework
  • Khởi tạo project như hình dưới

1.png

2.png

  1. Tạo 1 file swift mới FRNetwork.swift

3.png

  • Class kết nối mạng sẽ cần dùng tới 2 thư viện: Almofire và SwiftJson. Mình sẽ tạo 1 podFile có nội dung như sau:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, "8.0"
inhibit_all_warnings!
use_frameworks!
target 'FRNetwork' do
  pod 'SwiftyJSON', '~> 2.3.2'
  pod 'Alamofire', '~> 3.3'
end
  • Sau đó mở terminal, trỏ đến thư mục chứa PodFile (sử dụng lệnh cd), và chạy cmd: pod install. Bạn sẽ thấy project sẽ download 2 thư viện về.

4.png

Sau đó bạn mở project và build thử, phải chắc chắn rằng không có lỗi gì xảy ra 😃

  • Bây giờ mình sẽ hướng dẫn bạn viết nội dung lớp FRNetwork.swift Khai báo 2 thư viện sẽ sử dụng:
import Alamofire
import SwiftyJSON

Nội dung class thì tham khảo tại đây: https://github.com/phanthanhhai/FRNetwork/blob/master/FRNetwork/FRNetwork.swift

  1. Tạo GitHub repo
  • Đăng nhập vào https://github.com và tạo 2 repo tương ứng sau: FRNetworkFRNetworkSpecs

Screen Shot 2016-04-27 at 3.55.32 PM.png

  • Sau đó tạo 1 file Podspec trong cùng thư mục project với nội dung sau:
Pod::Spec.new do |s|
  s.platform = :ios
  s.ios.deployment_target = '8.0'
  s.name = "FRNetwork"
  s.summary = "FRNetwork is network manager"
  s.requires_arc = true
  s.version = "1.0"
  s.license = { :type => "MIT", :file => "LICENSE" }
  s.author = { "note1" => "note2" }
  s.homepage = "note3"
  s.source = { :git => "note4", :tag => "#{s.version}"}
  s.framework = "UIKit"
  s.framework = "CoreLocation"
  s.dependency 'SwiftyJSON', '~> 2.3.2'
  s.dependency 'Alamofire', '~> 3.3'
  s.source_files = "FRNetwork/**/*.{swift,h,m}"
  #s.resources = "FRNetwork/**/*.{png,jpeg,jpg,storyboard,xib}"
end

Trong đó note1: tên của bạn note2: email của bạn note3: đường dẫn đến homepage FRNetwork mà bạn vừa tạo (ví dụ https://github.com/framgia/FRNetwork) note4: đường dẫn đến git FRNetwork mà bạn vừa tạo (ví dụ https://github.com/framgia/FRNetwork.git)

  1. Tạo LICENSE Bạn có thể copy license mẫu ở đây http://choosealicense.com/licenses/mit/ sau đó mở editor sửa lại year và name theo ý của bạn, và save lại với tên LICENSE (không có định dạng) vào thư mục project (FRNetwork)

  2. Push to git cd đến thư mục FRNetwork

git init
git add .
git commit -m "Initial commit"
git tag 1.0
git remote add origin [Đường dẫn tới FRNetwork git]
git push -u origin master --tags
  1. Kết nối FRNetworkSpecs

Bạn gõ lần lượt 2 lệnh sau:

pod repo add FRNetworkSpecs [Đường dẫn tới FRNetwork git]

pod repo push FRNetworkSpecs FRNetwork.podspec

Nếu bị lỗi thì hãy gõ lại lệnh pod repo push FRNetworkSpecs FRNetwork.podspec --allow-warnings

Nếu kết quả như sau nghĩa là bạn đã tạo thành công 1 cocoapod riêng của mình.

Screen Shot 2016-04-29 at 10.38.42 PM.png

Thế là bạn đã tự tạo được một cocoapod của mình. Để sử dụng lib thì trong PodFile bạn chỉ cần khai báo:

source 'Đường dẫn đến git FRNetwork'
pod 'FRNetwork', '~> 1.0'

Bài viết tham khảo: https://www.raywenderlich.com/99386/create-cocoapod-swift Source tham khảo: https://github.com/phanthanhhai/FRNetwork


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí