use_frameworks! только для некоторых стручков или быстрых стручков

У меня есть оба Objective C и Swift Pods в моем проекте.

 pod 'WBWebViewConsole', '~> 1.0.1' use_frameworks! pod 'XWebView', '~>0.9.5' pod 'Starscream', '~> 1.1.3' 

Поскольку быстрые POD ( XWebView , Starscream ) могут быть добавлены только в качестве фреймворков, я должен использовать use_frameworks!

Но это делает все POD как фреймворк, включая Objective-C POD ( WBWebViewConsole ).

Но это вызывает проблему с Objective-C POD, но я не намерен создавать Objective-C POD в качестве рамки.

Так или иначе, я могу игнорировать пару POD из преобразования в качестве фреймворка?

Благодарю.

Обновить:

Как воспроизвести проблему?

Проблема с POD WBWebViewConsole

Запустите подключенный проект на любых устройствах iOS 8+, имеющих подключение к Интернету, когда он загружает html-документ из Google Drive.

в html doc … нажмите Общие / Информация / Предупреждение / Отладка / Журнал ошибок

введите описание изображения здесь

вы увидите какой-либо текст, появляющийся на странице html всякий раз, когда вы нажимаете любую из вышеперечисленных кнопок ….

Библиотека собирает журналы, созданные на html-странице …

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

введите описание изображения здесь

Теперь нажмите кнопку « Получить журналы» … и просмотрите журналы в Xcode IDE … вы увидите все журналы консоли, созданные в html

введите описание изображения здесь

Get logs-> – это встроенная кнопка super, наложенная на webview. Библиотека позволяет нам читать консольные журналы из wkwebview ..

Теперь в POD u раскомментируем следующие строки

 use_frameworks! pod 'PLCrashReporter' pod 'XWebView', '~> 0.9.5' 

и сделать pod install

затем вставьте следующий код поверх ViewController

 import WBWebViewConsole 

Вот проект, с которым все это не связано со всеми изменениями, необходимыми для воспроизведения проблемы

теперь вы запускаете проект на устройстве и нажимаете некоторые кнопки на странице html и нажимаете « Получить журналы», вы не можете видеть комментарии, созданные на странице html

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

 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler - (void)wb_evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^)(NSString *, NSError *))completionHandler 

Но при создании экземпляра WBWKWebView и загрузке URL-адреса все необходимые делегаты этого класса увольняются.

Вышеупомянутые делегаты должны запускаться при записи журнала при нажатии кнопки на странице html

4 Solutions collect form web for “use_frameworks! только для некоторых стручков или быстрых стручков”

Когда JSBridge init, он добавит некоторые «UserScripts» в webview, источник которых загружен из [NSBundle mainBundle] в предыдущей версии. Но если он находится в рамках, файлы ресурсов находятся в пакете framework вместо mainBundle .

Таким образом, исправление находится в WBWebViewConsoleDefines

замените это

 inline static NSBundle * WBWebBrowserConsoleBundle() { return [NSBundle bundleWithPath:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] bundlePath], @"WBWebBrowserConsole.bundle"]]; } 

с

 inline static NSBundle * WBWebBrowserConsoleBundle() { return [NSBundle bundleWithPath:[NSString stringWithFormat:@"%@/%@", [NSBundle bundleForClass:[WBWebViewConsole class]], @"WBWebBrowserConsole.bundle"]]; } 

На самом деле автор выпустил новую версию, у нее также есть исправление

pod 'WBWebViewConsole', '~> 1.0.2'

  1. pod install
  2. перезапустите Xcode и очистите свой проект
  3. снова строить и запускать

Примечание: Это невозможно. если вы используете_frameworks! все становится динамической основой.

  source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' use_frameworks! pod 'WBWebViewConsole', '~> 1.0.1' pod 'XWebView', '~>0.9.5' pod 'Starscream', '~> 1.1.3' 

нет необходимости указывать цель c pod выше use_framework !.

Я использую оба объекта Objective-C и Swift вместе с моим проектом. Вы должны использовать директиву use_frameworks! если вам нужно включить стручки, написанные в Swift. Использование use_frameworks! директива с непередвижными стручками не вызывает проблем. Поместите директиву в верхнюю часть списков контейнеров.

Как правило, import ModuleName Objective-C должны работать только с использованием import ModuleName в любом быстром файле, который вы хотите использовать фреймворк, но если это не так, вы должны попробовать добавить мостовую-header.h в свой проект и #import объектно-c там есть заголовок.

Попробуйте это и обновите здесь о результатах.

Основанный на члене CocoaPods:

Это невозможно для общего случая из-за транзитивных зависимостей. Если Pod A строит динамически и зависит от Pod B, который строит статически, и приложение также зависит от Pod B, его невозможно построить, потому что либо Pod A будет пропускать символы Pod B во время ссылки, либо вы в конечном итоге с несколькими копиями Pod B. Есть, вероятно, больше сценариев, которые не будут работать.

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

Interesting Posts

Круговые зависимости iOS между определениями блоков

Все UIElements становятся недоступными после завершения анимации

Вспышка белого цвета при изменении ориентации на iOS Safari

Objective-C 101 (сохранить vs назначить) NSString

Рамка UIView изменяется после перевертывания

UICollectionView для Springboard как папки

Свойство не может быть найдено в объекте прямого класса

iOS – viewDidLayoutSubviews, вызываемый до завершения автоматической компоновки на iOS7

Обнаружение отказа DNS с помощью конфигурации NSURLSession?

Cocoa Pods не удалось связать библиотеки во время работы в режиме отладки?

Какие нарушения конфиденциальности или изменения устройств я могу сделать на iPhone?

как предотвратить использование других методов init, отличных от моего пользовательского метода, в объектно-c

Различная локализация зависит от цели

iOS8: Отклонить лист формы на внешнем кране

Сохранение NSNumber в NSUserDefaults

PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.