use_frameworks! for only some pods or swift pods(使用框架(_F)!只适用于一些豆荚或快速豆荚)
问题描述
我的项目中同时有Objective C
和Swift
Pod。
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’
- Pod安装
- 重新启动Xcode并清除项目
- 重新生成并运行
注意:这是不可能的。如果您使用_Frameworks!一切都变成了动态框架。
这篇关于使用框架(_F)!只适用于一些豆荚或快速豆荚的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!