Come rimuovere CocoaPods da un progetto?


472

Qual è il modo giusto di rimuovere CocoaPods da un progetto? Voglio rimuovere l'intero CocoaPod. A causa di alcune limitazioni imposte dal mio cliente, non posso utilizzarlo. Devo avere solo un xcodeproj invece di uno xcworkspace.


12
E ricorda: la prossima volta usa git e torna indietro!
Dan Rosenstark,

35
Eseguipod deintegrate
onmyway133,

Risposte:


1032

La rimozione di CocoaPods da un progetto è possibile, ma attualmente non automatizzata dalla CLI. Per prima cosa, se l'unico problema che hai è non essere in grado di utilizzare un xcworkspace, puoi usare CocoaPods con solo xcodeprojs usando il --no-integrateflag che produrrà lo Pods.xcodeprojspazio di lavoro ma non. Quindi puoi aggiungerlo xcodeprojcome sottoprogetto al tuo principale xcodeproj.

Se vuoi davvero rimuovere tutta l'integrazione di CocoaPods devi fare alcune cose:

NOTA la modifica di alcune di queste cose se eseguita in modo errato potrebbe interrompere il progetto principale. Ti incoraggio vivamente a controllare i tuoi progetti nel controllo del codice sorgente per ogni evenienza. Anche queste istruzioni sono per la versione CocoaPods 0.39.0, potrebbero cambiare con le nuove versioni.

  1. Elimina i file autonomi ( Podfile Podfile.locke la tua Podsdirectory)
  2. Elimina il generato xcworkspace
  3. Apri il tuo xcodeprojfile, elimina i riferimenti a Pods.xcconfige libPods.a(nel Frameworksgruppo)
  4. Sotto la tua Build Phasesla cancellazione Copy Pods Resources, Embed Pods Frameworkse Check Pods Manifest.lockle fasi.
  5. Questo può sembrare ovvio, ma dovrai integrare le librerie di terze parti in qualche altro modo o rimuovere riferimenti ad esse dal tuo codice.

Dopo questi passaggi dovresti essere impostato con un singolo xcodeprojesistente prima di integrare CocoaPods. Se ho perso qualcosa fammelo sapere e lo modificherò.

Inoltre, siamo sempre alla ricerca di suggerimenti su come migliorare CocoaPods, quindi in caso di problemi, si prega di inviarli nel nostro tracker di problemi in modo che possiamo trovare un modo per risolverli!

MODIFICARE

Come mostrato da Jack Wu nei commenti, esiste un plug-in CocoaPods di terze parti che può automatizzare questi passaggi per te. Esso può essere trovato qui . Si noti che si tratta di un plug-in di terze parti e potrebbe non essere sempre aggiornato quando lo è CocoaPods. Si noti inoltre che è stato creato da un membro del team principale di CocoaPods in modo che il problema non sia un problema.


Grazie a Dio per questo post. Sono stato fregato da questo incubo ... stackoverflow.com/questions/9863836/library-not-found-for-lpods e per ora ho dovuto rimuovere CP. Grazie
Fattie,

1
(Nel mio caso - marzo 2014 - riguardava tutta la follia "Parse / Facebook liraries / architecture settings". Potrebbe aiutare qualcuno a leggere. Ancora grazie.)
Fattie

Sto per fare questo e la ragione è che deve regolarmente ricompilare tutti i progetti Pod anche se nessuno di essi è stato toccato, quindi ha rallentato notevolmente i miei tempi di costruzione.
theLastNightTrain

24
Lo lascerò qui perché ha funzionato benissimo per me: github.com/kylef/cocoapods-deintegrate
Jack

1
Se qualcuno si chiede perché un milione di avvisi vengano visualizzati in Xcode, è perché è necessario eseguire il commit delle modifiche su git / svn
Achintya Ashok

353

pod deintegratee pod cleansono due comandi designati per rimuovere CocoaPod dal tuo progetto / repository.

Ecco il set completo di comandi:

$ sudo gem install cocoapods-deintegrate cocoapods-clean
$ pod deintegrate
$ pod cache clean --all
$ rm Podfile

La soluzione originale è stata trovata qui: https://medium.com/@icanhazedit/remove-uninstall-deintegrate-cocoapods-from-your-xcode-ios-project-c4621cee5e42#.wd00fj2e5

Documentazione CocoaPod su pod deintegrate: https://guides.cocoapods.org/terminal/commands.html#pod_deintegrate


3
grazie, funziona (quasi) per me. Dopo questi comandi ho ricevuto un errore del linker durante la compilazione. La soluzione era rimuovere il "framework Pods" da Target-> Build Phases-> Link Binary With Libraries
uldo

Dalla versione 1.0.0beta8 i Cocoapods creano strane fasi di build con tali nomi: 📦 Controlla Pods Manifest.lock. Controllare se vengono rimossi dopo la disintegrazione.
Timur Bernikovich,

Si noti che se ci si trova su un computer su cui non sono installati cocoapods, è necessario eseguire gem install cocoapods prima che il comando pod funzioni. Questo può accadere se ripristini o copi un progetto su un nuovo sistema.
NoelHunter il

65

Per rimuovere completamente i pod da un progetto, devi prima installare due cose ... quelle che seguono (Supponendo che tu abbia già installato cacao-pod nel tuo sistema.) ...

  1. Cocoapods-Deintegrate Plugin
  2. Plugin pulito da Cocoapods

Installazione

  1. Cocoapods-Deintegrate Plugin

    Utilizzare questo comando seguente sul terminale per installarlo.

    sudo gem install cocoapods-deintegrate
  2. Plugin pulito da Cocoapods

    Utilizzare questo comando seguente sul terminale per installarlo.

    sudo gem install cocoapods-clean

uso

Prima di tutto vai alla cartella del tuo progetto usando il solito comando come ..

cd (path of the project) //Remove the braces after cd

Ora usa quei due plugin per rimuoverlo completamente come segue ..

  1. Cocoapods-Deintegrate Plugin

    Utilizzare questo comando seguente sul terminale per disintegrare prima i pod dal progetto.

     pod deintegrate

Baccelli Deintegranti

  1. Plugin pulito da Cocoapods

    Dopo la disintegrazione di pod dal progetto, utilizzare questo comando sul terminale per pulirlo completamente.

     pod clean

    Dopo aver completato le attività di cui sopra dovrebbe esserci ancora il Podfile rimasto nella directory del progetto ... Basta eliminarlo manualmente o utilizzare questo comando seguente sul terminale.

     rm Podfile

Ecco fatto ... Ora hai il tuo progetto libero dai pod ... Pulito.

Rimozione di Cocoapods dal sistema.

In ogni caso, prova a utilizzare il seguente comando sul tuo terminale per disinstallare / rimuovere i coca-pod dal tuo sistema.

sudo gem uninstall cocoapods

Rimuoverà automaticamente i baccelli di coca.

Grazie. Spero che questo abbia aiutato.


5
Whoa! pod clean elimina il tuo spazio di lavoro , anche se ci sono altri progetti in esso! Stai attento!

1
@charl In caso di pulizia dei pod dal tuo singolo progetto devi cancellare l'area di lavoro ... ma il metodo ovviamente non è applicabile per più progetti associati al singolo spazio di lavoro .... :(
onCompletion

perfetto !! Esattamente quello che volevo
Vigneshwaran.m

49

Penso che ci sia un modo più semplice per farlo.

Come modificato dalla risposta accettata, ora è possibile utilizzare un plug -in di terze parti cocoapods-deintegrate , è affidabile perché realizzato da un membro del team principale di CocoaPods.

Ma rimangono ancora alcuni file:

Podfile
Podfile.lock
Workspace

Potresti rimuoverli dal tuo progetto manualmente , ma c'è anche un altro strumento per aiutarti a pulirli, grazie a cocoapods-clean .

Infine, il lavoro di disinstallazione non è ancora completato, cocoapods-cleannon pulire Podfile, basta eseguire:

rm Podfile

Saluti!

Prima di rimuovere dovresti assicurarti di avere un backup del tuo progetto!


1
il problema con deintegrate è che si basa su gemme e rubini, proprio come i cocoapodi. Attualmente sto cercando di rimuovere i pod a causa delle difficoltà con El Capitan e le gemme. I programmi di disinstallazione dovrebbero essere disponibili come file binari autonomi.
nheagy,

Grazie e maggiori dettagli qui se riscontri problemi dopo una disintegrazione riuscita.
Adam Johns,

Grazie che è stato lisci usando 'cocoapods-deintegrate'
shaikh

46

pod deintegrate

Dopo questo cmd, nessuna traccia di Cocoapods è rimasta nel tuo progetto.

Ma lo spazio di lavoro che fa riferimento al progetto Pods rimane ancora, è necessario rimuovere manualmente i seguenti 3 file:

xx.xcworkspace
Podifle
Podfile.lock

Quindi è possibile utilizzare nuovamente il progetto.

Divertiti!

Prova la versione CocoaPod = 1.2.0


Bello, ha funzionato anche qui dopo aver già eliminato la maggior parte delle cose a mano.
brainray,

deintegrare le armi nucleari nel tuo spazio di lavoro. Fai attenzione se ne hai bisogno.
SafeFastExpressive

1
@mistdon hai salvato la vita una seconda volta.
Dheeraj D,

20

Ho provato tutte queste risposte ma ancora non si è costruito, alla fine ho provato:

pod deintegrate
pod install

che in realtà ha funzionato!

È come se fosse necessario rimuovere tutti gli script pod dalle fasi di compilazione e aggiungerli nuovamente affinché funzioni, almeno nel mio caso.


Particolarmente utile, se hai rinominato un progetto con pod integrati.
bisma,

12

La risposta di Keith è ottima: voglio solo sottolineare che, poiché Cocoapods 0.36 sta iniziando a supportare Dynamic Frameworks , se stai usando 'use_frameworks!' nel tuo "Podfile" e desideri rimuovere i Cocoapods, devi fare questo:

  • In fase di Build Phaseseliminazione Embed Pods Frameworks.

Giusto. Se non lo fai, otterrai errori di compilazione.
Zia,

Se ci sono altri file che si occupano Podsall'interno di Build Phases eliminare anche loro.
luckyging3r

8

Ci possono essere due aspetti che lo sviluppatore potrebbe dover affrontare.

  • O vuole rimuovere completamente i pod dal progetto
  • lo sviluppatore desidera disinstallare un particolare framework dal progetto dai pod.

Nel primo caso devi usare 'pod deintegrate' e seguire diversi passaggi che sono menzionati nelle risposte sopra.

Per il secondo caso, se si desidera disinstallare un determinato framework installato nel modo pod molto semplice disponibile nel proprio file pod, è sufficiente commentare il framework che si desidera disinstallare ed eseguire il comando pod install.

# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
target 'ProjectName' do
  # Uncomment this line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

    pod 'iCarousel', '~> 1.8'
#    pod 'Facebook-iOS-SDK', '~> 4.1'
#    pod 'ParseFacebookUtilsV4', '~> 1.11'
#    pod 'Parse', '~> 1.14'


end

Qui voglio disinstallare Facebook e analizzare i framework (che sono stati installati usando i pod) e non iCarousel, ecco perché ho aggiornato il mio file pod come sopra.

Ora se eseguo pod pod manterrà iCarousel come è nel mio progetto e rimuoverà Facebook e analizzerà.


4
  1. La prima cosa che dovrete fare è togliere la Podfile, Podfile.lockla Podscartella e l'area di lavoro generato.
  2. Quindi, in .xcodeproj, rimuovi i riferimenti ai Pods.xcconfigfile e al libPods.afile.
  3. Nella scheda del progetto Crea fasi, elimina la sezione Controlla Pods Manifest.lock (aperta), Copia risorse Pod (sezione in basso) e Incorpora risorse pod (in basso).
  4. Rimuovi Pods.framework.

L'unica cosa che potresti voler fare è includere alcune delle librerie che stavi utilizzando in precedenza. Puoi farlo semplicemente trascinando qualsiasi cartella nelle cartelle dei pod nel tuo progetto (preferisco metterli nella mia cartella dei file di supporto).

Ha funzionato per me.


4
$ sudo gem install cocoapods-deintegrate cocoapods-clean
$ pod deintegrate
$ pod clean
$ rm Podfile

Dopo essersi sbarazzato di tutti i cocoapodigem uninstall cocoapods-deintegrate cocoapods-clean
Onur Tuna


2

Elimina tutti i file pod correlati:

  • xx.xcworkspace
  • Podfile
  • Podfile.lock

e nel Project Navigator:

Fai clic sul nome del progetto (icona blu) -> Target (*) -> Fasi di costruzione -> Rimuovi "[CP] Check Pods manifests.lock" (fai clic sulla "x")

(*) Fare clic sul nome del progetto, potrebbe essere necessario fare clic su "Mostra il progetto e l'elenco di destinazione" per visualizzare prima la barra laterale.


Ho anche eliminato la cartella "Pods" perché ne stavo usando solo una, altrimenti ho eliminato la singola cartella "NameOfThePod" all'interno della cartella "Pods".
Neph,

1

Scriverò ciò che IV ha fatto molto brevemente (per eliminare qualsiasi CocoaPods dal mio progetto) ..

  1. elimina qualsiasi cartella aggiunta (framework, pod, ...)
  2. elimina tutti i file aggiunti (PROJECT.xcworkspace, PodFile, PodFile.lock, Pods-PROJECT.debug.xcconfig, Pods-PROJECT.release.xcconfig, ...)
  3. lascia solo quelli originali (PROJECT, PROJECT_Tests, PROJECT.xcodeproj)
  4. rimuovere il riferimento del framework dal progetto su xcode

Per rimuovere il riferimento del framework da xcode:

  1. Usa Project Navigator
  2. Seleziona progetto
  3. Seleziona Target PROJECT
  4. Seleziona Crea fasi dalle opzioni principali
  5. lascia i gruppi predefiniti (Dipendenze target, Origini compilazione, Binario collegato con librerie, Copia risorse pacchetto) ed elimina qualsiasi altro


1

Se desideri solo rimuovere un pod e mantenerne altri che potresti aver installato, apri il file pod nella directory dell'app ed elimina quello che desideri rimuovere. Quindi vai alla directory della tua app utilizzando il terminale e digita:

pod update

Ciò rimuoverà il pod rimosso dal podfile. Vedrai che è stato rimosso nel terminale:

Analyzing dependencies
Removing FirebaseUI
Removing UICircularProgressRing

Si noti che questo metodo estrarrà anche eventuali aggiornamenti agli altri pod nel file pod. Potresti o meno volerlo.


Per la documentazione, è necessario utilizzare pod installper aggiungere / rimuovere i pod. Questo è specificamente per evitare l'aggiornamento come hai detto qui. Puoi leggere di più sulle loro "Guide" proprio su questo argomento ... guide.cocoapods.org/using/pod-install-vs-update.html
Mark A. Donohoe,

0

Usa questi comandi di Terminale (non dimenticare di usare sudo all'inizio di nuove righe):

open:YourDir YouName$ sudo gem uninstall cocoapods
Password:?
Remove executables:
    pod, sandbox-pod

in addition to the gem? [Yn]  Y
Removing pod
Removing sandbox-pod
Successfully uninstalled cocoapods-1.4.0
open:YourDir YourName$ gem list --local | grep cocoapods
cocoapods-core (1.4.0)
cocoapods-deintegrate (1.0.2)
cocoapods-downloader (1.1.3)
cocoapods-plugins (1.0.0)
cocoapods-search (1.0.0)
cocoapods-stats (1.0.0)
cocoapods-trunk (1.3.0)
cocoapods-try (1.1.0)

Disinstallare l'elenco uno per uno in questo modo:

open:YourDir YourName$ sudo gem uninstall cocoapods-core
Successfully uninstalled cocoapods-core-1.4.0
open:YourDir YourName$ sudo gem uninstall cocoapods-trunk
Successfully uninstalled cocoapods-trunk-1.3.0
open:YourDir YourName$ sudo gem uninstall cocoapods-try
Successfully uninstalled cocoapods-try-1.1.0
open:YourDir YourName$ gem list --local | grep cocoapods
open:YourDir YourName$ sudo gem uninstall cocoapods-stats
Successfully uninstalled cocoapods-stats-1.0.0
open:YourDir YourName$ sudo gem uninstall cocoapods-search
Successfully uninstalled cocoapods-search-1.0.0
open:YourDir YourName$ sudo gem uninstall cocoapods-downloader
Successfully uninstalled cocoapods-downloader-1.1.3
open:YourDir YourName$ sudo gem uninstall cocoapods-plugins
Successfully uninstalled cocoapods-plugins-1.0.0
open:YourDir YourName$ gem list --local | grep cocoapods
cocoapods-deintegrate (1.0.2)
open:YourDir YourName$ sudo gem uninstall cocoapods-deintegrate
Successfully uninstalled cocoapods-deintegrate-1.0.2
open:YourDir YourName$ sudo gem uninstall cocoapods-stats
Successfully uninstalled cocoapods-stats-1.0.0
open:YourDir YourName$ sudo gem uninstall cocoapods-search
Successfully uninstalled cocoapods-search-1.0.0
open:YourDir YourName$ sudo gem uninstall cocoapods-downloader
Successfully uninstalled cocoapods-downloader-1.1.3
open:YourDir YourName$ sudo gem uninstall cocoapods-plugins
Successfully uninstalled cocoapods-plugins-1.0.0
open:YourDir YourName$ gem list --local | grep cocoapods
cocoapods-deintegrate (1.0.2)
open:YourDir YourName$ sudo gem uninstall cocoapods-deintegrate
Successfully uninstalled cocoapods-deintegrate-1.0.2

0

Sono stato in grado di rimuovere i miei pod nel progetto usando l'app CocoaPods (Versione 1.5.2). Successivamente ho eliminato solo i file podfile, podfile.lock e xcworkspace nella cartella.



0

Non penso che tu debba più disintegrarti. Sono stato in grado di farlo con il seguente comando nel terminale:

installazione pod

e ha rimosso automaticamente quelli che non sono più nel podfile

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.