12/08/2018, 17:58

Dependency Management for iOS : CocoaPods vs. Carthage

Giới thiệu. Đối với các lập trình viên việc tái sử dụng code không chỉ giúp tiết kiệm được thời gian, chi phí cho công việc phát triển phần mềm, tập trung vào phát triển các tính năng chính mà còn góp phần giảm bớt sự nhàm chán khi phải làm đi làm lại các công việc lặp lại trong các dự án khác ...

Giới thiệu.

Đối với các lập trình viên việc tái sử dụng code không chỉ giúp tiết kiệm được thời gian, chi phí cho công việc phát triển phần mềm, tập trung vào phát triển các tính năng chính mà còn góp phần giảm bớt sự nhàm chán khi phải làm đi làm lại các công việc lặp lại trong các dự án khác nhau.

Có hàng ngàn thư viện trên Github sẵn sàng để cho các lập trình viên tích hợp vào dự án của mình, và bạn hoàn toàn có thể thêm chúng một cách rất thủ công đó là lên github tải về và thêm vào dự án.

Tuy nhiên tại sao bạn lại phải vất vả như thế trong khi chúng ta đã có những công cụ làm việc đó giúp chúng ta một cách tự động. Chúng không chỉ giúp công việc của bạn trở nên đơn giản hơn mà những người khác khi phát triển code của bạn cũng dễ dàng cài đặt hơn.

Hãy lấy ví dụ thế này nhé, một cách rất thủ công, bạn lên github, tải hết các mã, thêm vào dự án của mình, sau đó bạn code và lại đẩy dự án của bạn lên github để người khác có thể clone chúng về

Vấn đề ở đây là gì ?

  • Thứ nhất bạn đang không chỉ push lên code của bạn mà bạn cũng đang push luôn những code có sẵn trên git thêm một lần nữa, việc này rất mất thời gian đúng không.
  • Thứ hai đó là khi bạn muốn cập nhật phiên bản, thêm một lần nữa bạn lại phải lên git tải bản mới và ghi đè lên thư viện cũ.
  • Thứ ba, tôi cá rằng chỉ một thời gian ngắn bạn sẽ chẳng nhớ mình đang sử dụng version nào :]], việc này không chỉ gây khó khăn cho bạn mà còn gây khó khăn cho người khác khi phải maintain code của bạn vì họ cũng chẳng biết version của thư viện bạn đang sử dụng.

Hãy để CocoaPods và Carthage giúp bạn xử lý vụ này okay.

  • Cài đặt dễ dàng chỉ bằng vài dòng lệnh.
  • Chỉ cần thêm đường dẫn của thư viện, bạn không cần quan tâm với việc tải về và thêm chúng vào project.
  • Hỗ trợ bạn các tuỳ chọn quản lý version của thư viện.
  • Dễ dàng cập nhật các phiên bản mới nhất chỉ bằng một dòng lệnh
Command CocoaPods Carthage
Setup sudo gem install cocoapods brew install carthage
Create management file pod init touch Cartfile
Install pod install carthage update

(Các bạn có thể tham khảo thêm về các lệnh quản lý trong CocoaPods và Carthage)

Câu hỏi đặt ra là bạn nên sử dụng cái nào CocoaPods hay Carthage ?

Hừm, bạn sẽ có câu trả lời ngay sau đây thôi.

Hãy xem các bước để thêm thư viện alamofire vào CocoaPods nhé :

  • Bước 1 : Mở terminal lên, trỏ đến thư mục gốc project của bạn và gõ lệnh:
pod init

Done, một file pod được tạo ra. Bạn có thể mở project ra để xem (hoặc là gõ lệnh ls để kiểm tra.)

  • Bước 2 : Mở file pod bạn tạo lên bằng lệnh:
open -a Xcode Podfile

bây giờ pod file đã được mở lên và bạn chỉ cần thêm đoạn text sau vào file để cocoaPods hiểu được là bạn muốn thêm alamofire vào project của mình : pod 'Alamofire'. Sau khi thêm xong trông nó sẽ như thế này :

target 'Example' do
  use_frameworks!
  pod 'Alamofire'
end

trong đó Example là tên target project của bạn, use_frameworks! sẽ giúp CocoaPod hiểu rằng nếu thư viện bạn muốn thêm được viết bằng objectiveC nó sẽ convert sang swift cho bạn.

  • Bước 3: Gần xong rồi giờ thì đến bước tải thư viện về và thêm vào project, chỉ cần 1 dòng lệnh là đủ :
pod install

và giờ thì làm ngụm nước và chờ cho CocoaPods giúp bạn làm các công việc còn lại, sau khi hoàn thành bạn sẽ thấy trong thư mục gốc có một file có đuôi .xcworkspace được sinh ra, và từ giờ trở đi thay vì click vào file .xcodeproj để mở project như bạn vẫn thường làm thì hãy click vào file .xcworkspace

Woww!! rất đơn giản phải không.

Và giờ thì xem Carthage làm như thế nào nhé.

  • Bước 1 : Bạn cũng mở terminal lên, trỏ đến thư mục gốc project của bạn và gõ lệnh:
touch Cartfile

y hệt như CocoaPods một file được sinh ra khác mỗi cái tên cartfile

  • Bước 2 : Cũng giống CocoaPod bạn cũng phải mở cartfile và khai báo để Carthage có thể hiểu thứ bạn muốn
open -a Xcode Cartfile

Có một chút khác biệt ở đây, nếu như CocoaPods quản lý theo tên thư viện thì Carthage lại quản lý theo đường dẫn trong github Username/ProjectName vì thế ở đây chúng ta sẽ khai báo như sau : github "Alamofire/Alamofire"

  • Bước 3: CocoaPods làm sao thì Carthage cũng làm vậy thôi =)), chỉ cần 1 dòng lệnh là đủ :
carthage update

Xong, giờ bạn cũng ngồi uống nước và chờ thôi. Tuy nhiên công việc tiếp theo của bạn vẫn còn đang chờ phía trước bởi vì không giống CocoaPods, chả có cái file mới nào được sinh ra ở đây cả.

Có bạn nào quyết đinh dừng ở đây và sử dụng CocoaPods không             </div>
            
            <div class=
0