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:
- Buat wrapper SPM yang depend ke binary target.
- Tetap di CocoaPods untuk pod tersebut sampai upstream support SPM.
- 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 |