Section 13/171 menit

13. Migrasi dari CocoaPods / Carthage

13. Migrasi dari CocoaPods / Carthage

Strategi Migrasi Bertahap

Tahap 1: Inventarisasi pod yang sudah dukung SPM.

swift
grep "pod " Podfile | awk '{print $2}' | tr -d ',' | tr -d "'"
# Cek satu per satu: cari di GitHub apakah ada Package.swift

Mayoritas library populer (Alamofire, SnapKit, Lottie, SwiftyJSON, Realm) sudah dukung SPM.

Tahap 2: Tambahkan ke SPM, hapus dari Podfile.

swift
# Podfile (hapus baris ini)
pod 'Alamofire'
swift
// Package.swift atau Xcode "Add Package Dependencies"
.package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.6.0")

Tahap 3: Library yang belum support SPM.

Opsi:

  1. Buat wrapper SPM yang depend ke binary target.
  2. Tetap di CocoaPods untuk pod tersebut sampai upstream support SPM.
  3. Fork dan tambahkan Package.swift (kontribusi balik ke upstream).

Tahap 4: Setelah semua pod di-migrasi, hapus Podfile.

swift
pod deintegrate
rm Podfile Podfile.lock
rm -rf Pods/
git rm -rf Pods/ # kalau di-commit
# Restore .xcodeproj dari sebelumnya (CocoaPods sering modifikasi)

Gotcha Umum

Masalah Penyebab Solusi
Import gagal walau package added Target memory belum link ke product Project → Target → Frameworks: tambahkan library
Build success di Xcode, gagal di CI Package.resolved tidak di-commit Commit Package.resolved
Resource tidak ketemu Pakai Bundle.main, harusnya Bundle.module Ganti ke .module
Module not found di test Test target belum depend ke main target Tambah dependency di Package.swift