【发布时间】:2016-09-20 03:57:30
【问题描述】:
我的项目中有 Objective C 和 Swift Pod。
pod 'WBWebViewConsole', '~> 1.0.1'
use_frameworks!
pod 'XWebView', '~>0.9.5’
pod 'Starscream', '~> 1.1.3'
由于 swift POD(XWebView, Starscream) 只能作为我必须使用的框架添加 使用_frameworks!
但这使得所有 POD 都成为框架,包括 Objective-C POD(WBWebViewConsole)。
但这会导致 Objective-C POD 出现问题,但我不打算将 Objective-C POD 作为框架。
那么无论如何我可以忽略几个 POD 被转换为框架?
谢谢。
更新:
如何重现问题?
问题在于 POD WBWebViewConsole
在任何具有互联网连接的 iOS 8+ 设备中运行attached project,因为它会从谷歌驱动器加载 html 文档。
在 html 文档中……点击 General/Info/Warning/Debug/Error Log
每当您点击上述任何按钮时,您都会在 html 页面上显示一些文本……。
该库是关于捕获在 html 页面中生成的日志...
每当您单击按钮时,除了在 html 页面中显示一些文本之外,我都会在后台编写一些日志。
现在点击按钮 get logs ...并在 Xcode IDE 中查看日志...您将看到在 html 中生成的所有控制台日志
Get logs-> 是一个附加在 webview 上的原生按钮。该库让我们可以从 wkwebview 读取控制台日志 ..
现在在 POD 中 u 取消注释以下行
use_frameworks!
pod 'PLCrashReporter'
pod 'XWebView', '~> 0.9.5’
然后进行 pod 安装
然后将以下代码粘贴到 ViewController 之上
import WBWebViewConsole
这里是project,其中包含所有未注释的内容以及重现问题所需的所有更改
现在你在设备上运行项目并单击 html 页面中的一些按钮并单击 get logs 你看不到在 html 页面中生成的 cmets
具体来说,以下在 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 页面中的按钮写入日志时,上述委托应该被触发
【问题讨论】:
-
您知道
use_frameworks!只能与( >= iOS 8.0)一起使用吗? -
哦,我不知道,但我的项目支持仅从 iOS 8 开始..so np
-
我首先尝试使用
pod 'WBWebViewConsole', '~> 1.0.1',然后才添加use_frameworks! pod 'XWebView', '~>0.9.5’...现在我有框架和文件。然后你可以删除你不需要的文件/框架。 -
“但它会导致问题”——您能否提供一些有关问题所在的详细信息?我注意到的是,除非 pod 使用静态框架,否则 Obj-C pod 会很好地导入,然后你会得到各种各样的错误。但了解您遇到的实际错误会有所帮助。
-
@tkelly - 我更新了我的问题。
标签: ios objective-c swift cocoapods wbwebviewconsole