Как удалить CocoaPods из проекта?


472

Как правильно удалить CocoaPods из проекта? Я хочу удалить весь CocoaPod. Из-за некоторых ограничений, наложенных моим клиентом, я не могу его использовать. Мне нужно иметь только один xcodeproj вместо xcworkspace.


12
И помните: в следующий раз используйте git и просто откатитесь назад!
Дэн Розенстарк

35
Runpod deintegrate
onmyway133

Ответы:


1032

Удаление CocoaPods из проекта возможно, но в настоящее время не автоматизировано CLI. Во-первых, если единственная проблема, с которой вы столкнулись, это невозможность использования, xcworkspaceвы можете использовать CocoaPods только xcodeprojс s, используя --no-integrateфлаг, который создаст, Pods.xcodeprojно не рабочее пространство. Затем вы можете добавить это xcodeprojв качестве подпроекта на ваш основнойxcodeproj .

Если вы действительно хотите удалить все интеграции CocoaPods, вам нужно сделать несколько вещей:

ПРИМЕЧАНИЕ редактирование некоторых из этих вещей, если сделано неправильно, может сломать ваш основной проект. Я настоятельно рекомендую вам проверить ваши проекты в системе контроля версий на всякий случай. Также эти инструкции относятся к версии CocoaPods 0.39.0, они могут меняться с новыми версиями.

  1. Удалите автономные файлы ( Podfile Podfile.lockи ваш Podsкаталог)
  2. Удалить сгенерированный xcworkspace
  3. Откройте свой xcodeprojфайл, удалите ссылки на Pods.xcconfigи libPods.aFrameworksгруппе)
  4. При вашем Build Phasesудалении Copy Pods Resources, Embed Pods Frameworksи Check Pods Manifest.lockэтапы.
  5. Это может показаться очевидным, но вам нужно каким-то другим способом интегрировать сторонние библиотеки или удалить ссылки на них из своего кода.

После этих шагов вы должны быть установлены с одним xcodeproj , существовавший до того, как вы интегрировали CocoaPods. Если я что-то пропустил, дайте мне знать, и я отредактирую это.

Кроме того, мы всегда ищем предложения о том, как улучшить CocoaPods, поэтому, если у вас есть проблемы, пожалуйста, отправьте их в наш трекер, чтобы мы могли найти способ их исправить!

РЕДАКТИРОВАТЬ

Как показал Джек Ву в комментариях, есть сторонний плагин CocoaPods, который может автоматизировать эти шаги для вас. Это можно найти здесь . Обратите внимание, что это сторонний плагин, и он не всегда может быть обновлен, когда CocoaPods установлен. Также обратите внимание, что это сделано основным членом команды CocoaPods, чтобы проблема не была проблемой.


Слава Богу за этот пост. Я был облажан этим кошмаром ... stackoverflow.com/questions/9863836/library-not-found-for-lpods и мне пришлось сейчас удалить CP. Спасибо
Толстяк

1
(В моем случае - март 2014 года - это связано со всем безумием "Parse / Facebook библиотеки / настройки архитектуры". Может помочь кому-то читать.
Еще

Я собираюсь сделать это, и причина в том, что он регулярно должен перекомпилировать все проекты Pod, даже если ни один из них не был затронут, поэтому это значительно замедлило время моей сборки.
theLastNightTrain

24
Собираюсь оставить это здесь, потому что это отлично сработало для меня: github.com/kylef/cocoapods-deintegrate
Джек,

1
Если кому-то интересно, почему в Xcode появляется миллион предупреждений, это потому, что вам нужно зафиксировать свои изменения на git / svn
Achintya Ashok

353

pod deintegrateи pod cleanдве назначенные команды для удаления CocoaPod из вашего проекта / репо.

Вот полный набор команд:

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

Оригинальное решение было найдено здесь: https://medium.com/@icanhazedit/remove-uninstall-deintegrate-cocoapods-from-your-xcode-ios-project-c4621cee5e42#.wd00fj2e5

Документация по CocoaPod pod deintegrate: https://guides.cocoapods.org/terminal/commands.html#pod_deintegrate


3
спасибо, работает (почти) для меня. После этих команд я получил ошибку компоновщика во время компиляции. Решение состояло в том, чтобы удалить «Фреймворк Pods» из Targets-> Build Phases-> Link Binary With Libraries
uldo

Начиная с версии 1.0.0beta8 Cocoapods создают странные фазы сборки с такими именами: 📦 Проверьте Pods Manifest.lock. Проверьте, удаляются ли они после дезинтеграции.
Тимур Берникович

Обратите внимание, что если вы работаете на машине, на которой не установлены cocoapods, вам нужно будет выполнить gem install cocoapods, прежде чем сработает команда pod. Это может произойти, если вы восстановите или скопируете проект в новую систему.
NoelHunter

65

Чтобы полностью удалить стручки из проекта, вам нужно сначала установить две вещи ... они следующие (Предположим, у вас уже установлены какао-стручки в вашей системе.) ...

  1. Cocoapods-Deintegrate Plugin
  2. Cocoapods-Clean Плагин

Установка

  1. Cocoapods-Deintegrate Plugin

    Используйте следующую команду на вашем терминале, чтобы установить его.

    sudo gem install cocoapods-deintegrate
  2. Cocoapods-Clean Плагин

    Используйте следующую команду на вашем терминале, чтобы установить его.

    sudo gem install cocoapods-clean

Применение

Прежде всего, перейдите в папку вашего проекта, используя обычную команду, например ..

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

Теперь используйте эти два плагина, чтобы полностью удалить его следующим образом.

  1. Cocoapods-Deintegrate Plugin

    Используйте эту следующую команду на вашем терминале, чтобы сначала деинтегрировать модули из вашего проекта.

     pod deintegrate

Дезинтегрирующие стручки

  1. Cocoapods-Clean Плагин

    После деинтеграции pod из вашего проекта используйте следующую команду на вашем терминале, чтобы полностью очистить его.

     pod clean

    После выполнения вышеуказанных задач в каталоге вашего проекта должен остаться подфайл. Просто удалите его вручную или используйте следующую команду на терминале.

     rm Podfile

Вот и все ... Теперь ваш проект свободен от стручков ... Очищен.

Удаление Cocoapods из системы.

В любом случае попробуйте использовать следующую команду на своем терминале, чтобы удалить / удалить кока-стручки из вашей системы.

sudo gem uninstall cocoapods

Это удалит кока-стручки автоматически.

Спасибо. Надеюсь, это помогло.


5
Вау! pod clean удаляет ваше рабочее пространство , даже если в нем есть другие проекты! Быть осторожен!

1
@charl В случае очистки модулей из одного проекта вы должны очистить рабочее пространство ... но метод, очевидно, неприменим для нескольких проектов, связанных с одним рабочим пространством .... :(
onCompletion

место на !! Именно то, что я хотел
Vigneshwaran.m

49

Я думаю, что есть более простой способ сделать это.

Согласно отредактированному ответу, теперь вы можете использовать сторонний плагин cocoapods-deintegrate , он надежен, потому что его сделал член основной команды CocoaPods.

Но есть еще несколько файлов:

Podfile
Podfile.lock
Workspace

Вы можете удалить их из своего проекта вручную, но есть еще один инструмент, который поможет вам очистить их, благодаря cocoapods-clean .

Наконец, работа по удалению еще не завершена, cocoapods-cleanне очищайте Podfile, просто запустите:

rm Podfile

Ура!

Перед удалением вы должны убедиться, что у вас есть резервная копия вашего проекта!


1
Однако проблема деинтеграции заключается в том, что она основана на драгоценных камнях и рубине, как кокосопод. В настоящее время я ищу удалить стручки из-за трудностей с El Capitan и драгоценными камнями. Деинсталляторы должны быть доступны в виде отдельных двоичных файлов.
Nheagy

Спасибо и больше деталей здесь, если у вас возникнут проблемы после успешной деинтеграции.
Адам Джонс

Спасибо, что это было гладко, используя «cocoapods-deintegrate»
шейх

46

pod deintegrate

После этого cmd в вашем проекте не осталось следов Cocoapods.

Но ваше рабочее пространство, ссылающееся на проект Pods, все еще остается, вам нужно удалить ниже 3 файла вручную:

xx.xcworkspace
Podifle
Podfile.lock

Затем вы можете снова использовать свой проект.

Радоваться, веселиться!

Тестовая версия CocoaPod = 1.2.0


Хорошо, также работал здесь, уже удалив большинство вещей вручную.
мозговой

дезинтегрировать ядерное оружие вашего рабочего пространства. Будьте осторожны, если вам это нужно.
SafeFastExpressive

1
@mistdon вы спасли свою жизнь во второй раз.
Deeraj D

20

Я попробовал все эти ответы, но это все равно не получилось, в конце концов я попытался:

pod deintegrate
pod install

который на самом деле работал!

Как будто нужно удалить все сценарии pod из ваших фаз сборки и заново добавить их обратно, чтобы это работало, по крайней мере, в моем случае.


Особенно полезно, если вы переименовали проект со встроенными модулями.
Бисма

12

Ответ Кейта великолепен - я просто хочу отметить, что поскольку Cocoapods 0.36 начинает поддерживать Dynamic Frameworks , если вы используете 'use_frameworks!' в вашем «Podfile» и вы хотите удалить Cocoapods, вы должны сделать это:

  • На этапе Build Phasesудаления Embed Pods Frameworks.

Правильно. Если вы этого не сделаете, вы получите ошибки сборки.
Зия

Если есть какие-либо другие файлы, связанные с Podsвнутренней частью, Build Phases удалите их тоже.
luckyging3r

8

Разработчик может столкнуться с двумя аспектами.

  • Либо он хочет полностью удалить стручки из проекта
  • Разработчик хочет удалить конкретный фреймворк из проекта из модулей.

В первом случае вы должны использовать «pod deintegrate» и выполнить несколько шагов, упомянутых в ответах выше.

Во втором случае, если вы хотите удалить какой-либо конкретный фреймворк, который там установлен, очень простым способом, доступным в вашем файле pod, просто прокомментируйте фреймворк, который вы хотите удалить, и выполните команду 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

Здесь я хочу удалить фейсбук и проанализировать фреймворки (которые были установлены с помощью pods), а не iCarousel, поэтому я обновил свой файл pod, как указано выше.

Теперь, если я запустлю pod install, он сохранит iCarousel, как в моем проекте, и удалит Facebook и проанализирует.


4
  1. Первое , что вам нужно сделать , это удалить Podfile, Podfile.lock, тоPods папку, и создается рабочее пространство.
  2. Затем .xcodeprojудалите ссылки на Pods.xcconfigфайлы иlibPods.a файл.
  3. На вкладке проекта Build Phases удалите раздел Check Pods Manifest.lock (открыть), раздел «Копирование ресурсов Pod» (внизу) и «Embed Pod Resources» (внизу).
  4. Удалить Pods.framework.

Единственное, что вы можете сделать, - это включить некоторые библиотеки, которые вы использовали ранее. Вы можете сделать это, просто перетащив любые папки из папок pods в ваш проект (я предпочитаю помещать их в мою папку Supporting Files).

Это сработало для меня.




2

Удалить все связанные файлы pod:

  • xx.xcworkspace
  • Podfile
  • Podfile.lock

и в навигаторе проекта:

Нажмите на название проекта (синий значок) -> Цели (*) -> Этапы сборки -> Удалить «[CP] Check Pods manifts.lock» (нажмите на «x»)

(*) Нажмите на название проекта, возможно, вам придется нажать «Показать проект и список целей», чтобы сначала увидеть боковую панель.


Я также удалил папку «Pods», потому что я использовал только одну, в противном случае просто удалите одну папку «NameOfThePod» внутри папки «Pods».
Неф

1

Я напишу, что я сделал очень кратко (чтобы удалить любые CocoaPods из моего проекта) ..

  1. удалить любую добавленную папку (рамки, модули, ...)
  2. удалить любые добавленные файлы (PROJECT.xcworkspace, PodFile, PodFile.lock, Pods-PROJECT.debug.xcconfig, Pods-PROJECT.release.xcconfig, ...)
  3. просто оставьте свои оригинальные (PROJECT, PROJECT_Tests, PROJECT.xcodeproj)
  4. удалить ссылку на структуру из проекта на xcode

Чтобы удалить ссылку на структуру из xcode:

  1. Используйте навигатор проекта
  2. Выберите проект
  3. Выберите целевой проект
  4. Выберите Build Phases из лучших вариантов
  5. оставьте группы по умолчанию (целевые зависимости, исходники компиляции, связанные двоичные файлы с библиотеками, ресурсы пакета копирования) и удалите любые другие


1

Если вы просто хотите удалить один модуль и сохранить другие, которые вы, возможно, установили, откройте файл pod в каталоге вашего приложения и удалите тот, который вы хотите удалить. Затем перейдите в каталог приложения с помощью терминала и введите:

pod update

Это удалит модуль, который вы удалили из файла. Вы увидите, что он был удален в терминале:

Analyzing dependencies
Removing FirebaseUI
Removing UICircularProgressRing

Обратите внимание, что этот метод также извлекает все обновления для других модулей в вашем подфайле. Вы можете или не можете этого хотеть.


Согласно документации, вы должны использовать pod installдля добавления / удаления модулей. Это специально для того, чтобы избежать обновления, как вы сказали здесь. Вы можете прочитать больше в их «Руководствах» по этой самой теме ... guides.cocoapods.org/using/pod-install-vs-update.html
Марк А. Донохо,

0

Используйте эти команды терминала (не забудьте использовать sudo в начале новой строки):

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)

Удалить список один за другим, как это:

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

Мне удалось удалить мои модули в проекте с помощью приложения CocoaPods (версия 1.5.2). После этого я только удалил в папке файлы podfile, podfile.lock и xcworkspace.



0

Я не думаю, что вам нужно больше дезинтегрировать. Я смог сделать это с помощью следующей команды в терминале:

под установку

и он автоматически удаляет те, которых больше нет в подфайле

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.