2

Firebase/сообщений имеют зависимость от:Можно ли исключить зависимость в Cocoapods?

Using Firebase 
Using FirebaseAnalytics 
Using FirebaseCore 
Using FirebaseInstanceID 
Using FirebaseMessaging 
Using GoogleInterchangeUtilities 
Using GoogleSymbolUtilities 
Using GoogleToolboxForMac 

Я хотел бы знать, можно ли исключить GoogleToolboxForMac? Проблема в том, что у меня есть одна статическая библиотека, которая уже использует GoogleToolboxForMac без cocoapods.

Так что просто хотите знать, возможно ли это или нет?

ответ

1

Зависимости для Pod определены в его файле podspec.

Просто в теории: вы можете использовать fork/clone repo pod, отредактировать podspec, чтобы удалить зависимость и добавить новую git repo/fork в качестве источника в вашем подфайле. Тем не менее, после этого вам придется отредактировать пути поиска цели проекта pods, чтобы он мог найти нужную библиотеку, и вы удалили. Ожидайте больше проблем, поскольку библиотека находится в вашем основном проекте, а проект pods - отдельный. Я бы не рекомендовал это для вашего дела точно, просто говоря теоретически. Также есть дополнительные накладные расходы с обновлениями.

Кроме того, насколько я знаю, Firebase/Messaging repo не является общедоступным (не уверен в этом), что сделает этот вариант невозможным.

+0

Да, это не публичное репо, так есть ли обходной путь? Я поставил вопрос в другом формате [здесь] (http://stackoverflow.com/questions/40638972/same-library-included-from-two-libraries), поэтому, если у вас есть какое-либо предложение, я бы хотел его услышать –

2

Если предположить, что версия GoogleToolboxForMac до настоящего времени достаточно, чтобы удовлетворить требования Firebase/обмена сообщениями, вы можете сделать следующее:

  • Найти файлы xcconfig для каждого из схем сборки: находку. | Grep xcconfig
  • редактировать их и удалить следующие три строки:
  • "$ PODS_CONFIGURATION_BUILD_DIR/GoogleToolboxForMac"
  • -iquote "$ PODS_CONFIGURATION_BUILD_DIR/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers"
  • -framework "GoogleToolboxForMac"

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

Однако, как говорит @Valentin, это не рекомендуется. Вероятно, было бы лучше удалить здание GoogleToolboxForMac из существующей статической библиотеки и зависеть от Cocoapod, чтобы удовлетворить все зависимости GoogleToolboxForMac.

+0

Спасибо, но есть ли решение, если у меня нет доступа к изменению тех статических библиотек, которые я использую? –

+0

Вот в чем заключается первая часть моего ответа. –

2

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

pod 'Firebase/Messaging', :podspec => 'FirebaseMessaging.podspec.json' 

:: напр. Использование :: 1) Посещение>https://cocoapods.org/pods/FirebaseMessaging

2) Нажмите на «См Podspec» (Вы будете перенаправлены на существующую спецификацию на GitHub)

3) Скачать этот файл, нажав кнопку «Raw» с последующей «Сохранить Файл как '.

4) Поместите этот файл в том же каталоге, как podfile вашего Xcode проекта

5) Редактировать этот файл и удалить зависимость вы не заинтересованы.

6) Все это. Выполнить установку pod или обновление pod, что более важно для вас, и зависимость больше не будет установлена.

Следует отметить: Если FirebaseMessaging pod обновлен в будущем, вам придется самостоятельно синхронизировать файл локального файла.