Dur*_*n.H 13 objective-c ios cocoapods swift wbwebviewconsole
我的项目中有两个Objective C和SwiftPod.
pod 'WBWebViewConsole', '~> 1.0.1'
use_frameworks!
pod 'XWebView', '~>0.9.5’
pod 'Starscream', '~> 1.1.3'
Run Code Online (Sandbox Code Playgroud)
由于swift POD(XWebView,Starscream)只能作为框架添加,我必须使用 use_frameworks!
但这使得所有POD都成为框架,包括Objective-C POD(WBWebViewConsole).
但它会导致Objective-C POD出现问题,但我不打算将Objective-C POD作为框架.
那么无论如何我可以忽略几个POD被转换为框架?
谢谢.
如何重现这个问题?
问题出在POD WBWebViewConsole上
在任何具有互联网连接的iOS 8+设备中运行附加项目,因为它从谷歌驱动器加载html文档.
在html doc中...单击General/Info/Warning/Debug/Error Log
只要你点击上面的任何按钮,你就会在html页面上出现一些文字....
该库是关于捕获在html页面中生成的日志...
每当你点击按钮而不是在html页面中显示一些文本时我会在背景中写一些日志.
现在点击按钮获取日志 ...并在Xcode IDE中查看日志...您将看到在html中生成的所有控制台日志
获取日志 - >是一个超级强加于webview的本机按钮.该库让我们从wkwebview读取控制台日志.
现在在POD你取消注释以下几行
use_frameworks!
pod 'PLCrashReporter'
pod 'XWebView', '~> 0.9.5’
Run Code Online (Sandbox Code Playgroud)
并做pod安装
然后将以下代码粘贴到ViewController之上
import WBWebViewConsole
Run Code Online (Sandbox Code Playgroud)
这是一个项目,所有这些都没有注释重现问题所需的所有更改
现在你在设备上运行项目并单击html页面中的一些按钮并单击获取日志,你看不到在html页面中生成的注释
具体来说,WBWKWebView中实现的委托方法不会被解雇.
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
- (void)wb_evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^)(NSString *, NSError *))completionHandler
Run Code Online (Sandbox Code Playgroud)
但是在创建WBWKWebViewURL 的实例并加载URL时,此类的所有必要委托都会被触发.
上面的代表应该在单击html页面中的按钮时写入日志时触发
Muj*_*aFR 21
use_frameworks!除了您选择作为框架的 pod 之外,您可以将所有 pod覆盖并安装为静态
在Podfile 中使用use_frameworks!And 在文件末尾添加
dynamic_frameworks = ['aaa','bbb'] # <- swift libraries names
# Make all the other frameworks into static frameworks by overriding the static_framework? function to return true
pre_install do |installer|
installer.pod_targets.each do |pod|
if !dynamic_frameworks.include?(pod.name)
puts "Overriding the static_framework? method for #{pod.name}"
def pod.static_framework?;
true
end
def pod.build_type;
Pod::BuildType.static_library
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
小智 4
初始化时JSBridge,它会向 webview 添加一些“UserScripts”,这些源是从以前版本的 [NSBundle mainBundle] 加载的。但如果它在框架中,则资源文件位于框架捆绑包中,而不是mainBundle.
所以解决办法是WBWebViewConsoleDefines
替换这个
\n\ninline static NSBundle * WBWebBrowserConsoleBundle()\n{\nreturn [NSBundle bundleWithPath:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] bundlePath], @"WBWebBrowserConsole.bundle"]];\n}\nRun Code Online (Sandbox Code Playgroud)\n\n和
\n\ninline static NSBundle * WBWebBrowserConsoleBundle()\n{\nreturn [NSBundle bundleWithPath:[NSString stringWithFormat:@"%@/%@", [NSBundle bundleForClass:[WBWebViewConsole class]], @"WBWebBrowserConsole.bundle"]]; \n}\nRun Code Online (Sandbox Code Playgroud)\n\n其实作者已经发布了新版本,也有修复
\n\npod \'WBWebViewConsole\', \'~> 1.0.2\xe2\x80\x99
\n\n注意:这是不可能的。如果你使用_frameworks!一切都成为动态框架。
\n| 归档时间: |
|
| 查看次数: |
3750 次 |
| 最近记录: |