使用框架(_F)!只适用于一些豆荚或快速豆荚 [英] use_frameworks! for only some pods or swift pods

查看:131
本文介绍了使用框架(_F)!只适用于一些豆荚或快速豆荚的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的项目中同时有Objective CSwiftPod。

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

AS SWIFT Pod(XWebView红蜘蛛)只能作为我必须使用的框架添加 use_framework!

但这会使所有Pod作为框架,也包括Objective-C Pod(WBWebViewConsole)。

但这会导致Objective-C POD出现问题,但我不打算将Objective-C POD作为框架。

有没有什么方法可以忽略转换为框架的几个Pod?

谢谢。

更新:

如何重现问题?

问题与POD WBWebViewConsole有关

从Google驱动器加载html文档时,在任何连接Internet的iOS 8+设备中运行attached project

在HTML文档…中单击常规/信息/警告/调试/错误日志

无论何时单击上述任何按钮…,您都会在HTML页面上显示一些文本。

该库用于捕获HTML页面…中生成的日志

每当您单击该按钮时,除了在html页面中显示一些文本外,我都会在后台写入一些日志。

现在单击按钮获取日志…并查看Xcode IDE…中的日志您将看到所有以html格式生成的控制台日志

Get Logs->是添加在WebView上的本机按钮..该库允许我们从wkwebview读取控制台日志 ..

现在位于POD中 u取消对以下行的注释

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

并安装Pod

然后将以下代码粘贴到ViewController上

import WBWebViewConsole

这里是project,其中所有这些内容均未注释,并包含重现问题所需的所有更改

现在您在设备上运行项目并单击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页面中的按钮

推荐答案

JSBridge初始化时,会在WebView中添加一些UserScript,源码是从上一版本的[NSBundle mainBundle]加载的。但如果它在框架中,则资源文件在框架包中,而不是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安装
  2. 重新启动Xcode并清除项目
  3. 重新生成并运行

注意:这是不可能的。如果您使用_Frameworks!一切都变成了动态框架。

这篇关于使用框架(_F)!只适用于一些豆荚或快速豆荚的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆