Number: 031, Date: 2024-08-06

2024.07.29 ~ 2024.08.05

⚙️ CocoaPods → SwiftPM


For projects using CocoaPods as a dependency manager, if you are considering adopting Tuist, migrating to SwiftPM might be easier and can reduce build time. Given its advantages, migration is worth considering.

When switching from CocoaPods to SwiftPM, start by organizing the Pods and Products installed in the project.

Also, be prepared for a few situations:

  1. Version conflicts in dependencies installed via Swift Package

    For example, the 🔗 socket-cluster library hasn’t been continuously updated, and the internal test target uses an outdated version of RxSwift, making the library incompatible.

    Thus, I installed it from 🔗 my own repository that removes the test target.
  2. Libraries that do not support SwiftPM

    🔗 NaverMap iOS SDK does not support SwiftPM, but I found a 🔗 supported repository for installation.

After installing all Swift Packages, I created a Package Collection for future use.

Package Collection

While creating the Package Collection, I found the 🔗WWDC explanation helpful, though adding the signature was a bit complex.

  1. Obtain a Swift Package Collection Certificate.
  2. Register the certificate in Keychain, then convert the .p12 private key file to .pem using OpenSSL (if using OpenSSL version 1, you can use it as is; for version 3, add the -legacy option).
  3. Run the package-collection-sign command with the intermediate and root certificates.

SwiftPM Migration Steps

  1. Removed CocoaPods and Pod-related files.
  2. When using 🔗 [R.Swift library](https://github.com/mac-cain13/R.swift), replace the R.generated.swift Build Script with the Swift Package Build Tool Plugin.
  3. Updated the Firebase Crashlytics dSym upload script to be compatible with SwiftPM.
  4. Removed Bridging-Header.h if Objective-C libraries are not being used.
  5. Updated License Plist to be installed via SwiftPM.

📃 Resume Feedback


I received feedback from a colleague on my resume.

Summary

🙋🏻‍♂️ Other Notes


  1. Bitbucket is divided into Cloud (SaaS product) and DataCenter (on-premise product), and there are differences in the provided features.
  2. The commonly used Hangul consists of 2,350 characters.
  3. Bitbucket has a feature similar to Github gist, called Snippet. Note that once a gist is made public, it cannot be changed back to secret.