Blu*_*ter 11 xcode uiwebview ios wkwebview
提交我的最新版本时,Apple 对此警告做出了回应。
ITMS-90809:不推荐使用 API - Apple 将停止接受使用 UIWebView API 的应用程序的提交。有关更多信息,请参阅https://developer.apple.com/documentation/uikit/uiwebview。
仅供参考,我已经根据 Apple 的建议将所有 UIWebView 组件迁移到我项目中的 WKWebView 组件,但 Apple 仍然以相同的警告响应。
除了在 Xcode 中使用搜索功能之外,还有什么方法可以搜索任何仍然附加到我的项目的 UIWebView 元素?
Bal*_*ody 25
嘿,我尝试在 Xcode 中搜索。几个第三方库使用了它。(例如 FBSDK)我更新了这些库,但这还不够。
在下一次上传时,可怕的电子邮件又来了。
然后我找到了这篇文章:https : //medium.com/@zivchen_42755/for-me-that-wasnt-enough-it-didn-t-found-all-of-them-thats-weird-something-to-do -with-pod-i-a068d55b7fab
在评论中有人提到grep是药。
所以我试过了 grep -r UIWebView /Path/To/Project/*
它发现了一些也使用 UIWebView 的二进制框架。(GoogleSignin、Crashlytics ...)我也更新了这些。
在下一次上传时,没有可怕的电子邮件:D
您可以在项目中使用以下命令行来查找。
$ cd yourprojectpath
$ grep -r "UIWebView" .
Run Code Online (Sandbox Code Playgroud)
grep -r UIWebView对于源代码来说效果很好,但对于第三方二进制文件部分效果很好,因为从一方面来说,它们可以包含 UIWebView 的引用、注释或字符串数据,而无需实际使用 API,而从另一方面来说,它们可以使用它,但没有任何参考。
要检查二进制文件(应用程序、静态库或动态框架),您应该使用nm(llvm 符号表转储器)获取符号表,例如:
nm staticlib.a | grep UIWebView
0000000100117c38 t +[UIWebView(SCORVCE) load]
0000000100117c30 t +[UIWebView_SCORVCE_Importer import]
0000000100117ea4 t -[UIWebView(SCORVCE) vce_delegate]
0000000100117d54 t -[UIWebView(SCORVCE) vce_setDelegate:]
000000010012880c t -[VCETrack setUsingUIWebView:]
00000001001287fc t -[VCETrack usingUIWebView]
U _OBJC_CLASS_$_UIWebView
0000000100640668 s _OBJC_CLASS_$_UIWebView_SCORVCE_Importer
0000000100639f88 s _OBJC_IVAR_$_VCETrack._usingUIWebView
0000000100640640 s _OBJC_METACLASS_$_UIWebView_SCORVCE_Importer
0000000100117ca0 t ___26+[UIWebView(SCORVCE) load]_block_invoke
Run Code Online (Sandbox Code Playgroud)
对于框架,您应该对其二进制文件执行相同的操作:
nm MyFramework.framework/MyFramework | grep UIWebView
Run Code Online (Sandbox Code Playgroud)
最后,为了确保应用程序不使用 UIWebView,您应该制作一个存档,然后找到您的应用程序文件 (YourApp.app) 并在其中运行下一个脚本:
nm MyFramework.framework/MyFramework | grep UIWebView
Run Code Online (Sandbox Code Playgroud)