Как удалить повторяющиеся файлы, созданные с помощью cocoa pods в IOS

Я использую cocoa pods для интеграции нескольких сторонних файлов в свой проект.

Мне нужно интегрировать ниже pod в мой проект

xcodeproj 'MyApp'
workspace 'MyApp'

source 'https://github.com/CocoaPods/Specs.git'

target :"MyApp", :exclusive => true do

  platform :ios, '7.0'

  pod 'AFNetworking', '2.0.2'

  pod 'TwilioSDK', '~>1.2.2'

  pod 'SocketRocket', '0.3.1-beta2'

  pod 'AppRTC'

end

Когда я запускаю pod install. Я получаю дубликаты, как показано ниже.

SRWebSocket.h as duplicates

Когда я создаю свое приложение, я получаю сообщение об ошибке

ld: warning: directory not found for option '-L/Users/anand/Documents/
  Project/myApp_Backups/myApp_June/myApp_WEBRTC/Pods/build/Debug-
  iphoneos'
duplicate symbol _MD5_Update in:
    /Users/anand/Documents/Project/myApp_Backups/myApp_June/
  myApp_WEBRTC/Pods/AppRTC/Lib/libWebRTC.a(nss_static.md5.o)
    /Users/anand/Documents/Project/myApp_Backups/myApp_June/
  myApp_WEBRTC/Pods/TwilioSDK/Libraries/libcrypto.a(md5_dgst.o)
duplicate symbol _SHA1_Update in:

duplicate symbol _OBJC_IVAR_$_SRIOConsumer._readToCurrentFrame in:
    /Users/anand/Library/Developer/Xcode/DerivedData/myApp-
  gxdbyoohznnpigavdqmaeilzlavd/Build/Products/Debug-iphoneos/libPods-
  myApp-SocketRocket.a(SRWebSocket.o)
    /Users/anand/Documents/Project/myApp_Backups/myApp_June/
  myApp_WEBRTC/Pods/AppRTC/Lib/libWebRTC.a(socketrocket.SRWebSocket.o)

ld: 71 duplicate symbols for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я думал сделать ниже решений:

1) Удалите файл SRWebSocket.h - но он может получить ошибки, как в Pods.

2) Удалите pod 'SocketRocket', '0.3.1-beta2' из файла pod и запустите pod install, но я использовал как SRWebSocket.h, так и SRWebSocket.m в моем проекте перед установкой AppRTC в мой проект..!

Пожалуйста, предложите, как я могу решить эту проблему.

Спасибо в Advance..!

Ответ 1

Я исправил вышеупомянутую проблему, как показано ниже

В моем проекте Xcode - Настройки сборки - Другие флаги компоновщика - я удалил -all_load, после чего некоторые из повторяющихся ошибок исчезли.

Тем не менее я получаю предупреждения Socket Rocket с повторением после вышеупомянутого решения.

Я исправил это, перейдя в проект Pods Project - Selected Socket Rocket pods - удалил файл SRWebSocket.m из компиляции. Он отлично работает, и дубликаты удаляются.

Спасибо за все ответы..

Ответ 2

Вам нужно удалить код объекта socketrocket из libWebRTC.a

запустите lipo -info libWebRTC.a, чтобы узнать, какие архитектуры находятся в библиотеке (текущая версия - i386, armv7 и arm64)

Затем запустите

lipo libWebRTC.a -thin i386 -output libWebRTC-i386.a

Сделайте это для каждой архитектуры, заменив i386 на соответствующее значение. Затем вам нужно извлечь объектные файлы из каждого архива.

mkdir libWebRTC-i386 && cd libWebRTC-i386 && ar -x ../libWebRTC-i386.a

Сделайте это для каждой новой библиотеки единой архитектуры, которую вы только что создали. В каждой из новых папок вы найдете файлы .o, содержащие "socketrocket" - удалить их.

Затем заново архивируйте объектные файлы для каждой архитектуры

libtool -static *.o -o ../libWebRTC-i386.a

Как только вы это сделаете, повторно объедините их в жирную библиотеку

lipo -create libWebRTC-armv7.a libWebRTC-arm64.a libWebRTC-i386.a -output libWebRTC.a

И вуаля, теперь она должна работать. Действительно, бинарный файл libWebRTC.a нуждается в перестройке без кода объекта ракеты-носителя, а ракета-носитель должна быть добавлена ​​как зависимость от podspec.

Ответ 3

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

В вашем случае, возможно, есть два одинаковых файла m в Compile Sources, просто удалите их и попытайтесь восстановить.

Ответ 4

Для устранения ошибки символа дублирования выполните следующие действия.

1) Выберите проект Xcode > Перейдите к "Сборка фаз".

2) Оттуда найдите имя файла, для которого вы получаете дублирование.

3) Если возможно, тогда для ключевого слова поиска может быть больше ".m файлов".

4) Удалите все файлы, кроме тех, которые вам нужно для компиляции.

5) То же самое следует за процессом для всей повторяющейся ошибки

6) Что это! Ваша проблема будет решена точно.

Ответ 5

Создайте проблему для репозитория AppRTC, чтобы удалить заголовок и установить зависимость от SRWebSocket. В качестве временного решения - привяжите AppRTC к локальному пути с директивой :path и удалите этот файл из локального каталога. Или вы можете ссылаться на локальный файл podspec с незнанием на заголовке SRWebSocket в exclude_files config.

Ответ 6

  • Резервное копирование проекта
  • установить этот жемчуг на терминал:

https://github.com/kylef/cocoapods-deintegrate

  • выполните следующую команду:

    pod deintegrate

  • удалить файл Podfile.lock в каталоге проекта

  • снова выполнить установку:

pod install

  • Очистите и снова запустите Xcode

Надежда устранит вашу проблему.

Ответ 7

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

  1. откройте файл pod.
  2. закомментируйте все файлы, которые вы хотите удалить.

    enter image description here

  3. использовать Commend pod install

  4. вы все ваши комментарии удалит в терминале

Наслаждайтесь своим днем с чашкой чая или кофе, делая код.