如何在当前项目中搜索任何 UIWebView 组件使用情况?
How to search for any UIWebView component usage inside a current project?
在提交我的最新版本时,Apple 回应了这个警告。
ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview for more information.
仅供参考,我已经根据 Apple 的推荐将我项目中的所有 UIWebView 组件迁移到 WKWebView 组件,但 Apple 仍然以相同的警告响应。
除了在 Xcode 中使用搜索功能之外,是否有任何方法可以搜索仍然附加到我的项目的任何 UIWebView 元素?
嘿,我试着在 Xcode 中搜索。
一些第三方图书馆使用了它。 (以 FBSDK 为例)
我更新了这些库,但这还不够。
在下一次上传时,可怕的电子邮件再次到达。
并且在评论中有人提到 grep
是药。
所以我尝试了grep -r UIWebView /Path/To/Project/*
并且它发现了几个也使用 UIWebView 的二进制框架。 (GoogleSignin、Crashlytics ...)
我也更新了那些。
在下一次上传时没有可怕的电子邮件 :D
您可以在您的项目中使用以下命令行找到。
$ cd yourprojectpath
$ grep -r "UIWebView" .
grep -r UIWebView
适用于源,但部分适用于第 3 方二进制文件,因为从一方面来说,它们可以包含 UIWebView 的引用、注释或字符串数据,而无需实际使用 API,而从另一方面来说,它们可以使用它但没有任何参考。
要检查二进制文件(应用程序、静态库或动态框架),您应该使用 nm
获取符号 table(llvm 符号 table dumper),例如:
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
对于框架,您应该对其二进制文件执行相同的操作:
nm MyFramework.framework/MyFramework | grep UIWebView
最后,为了确保应用程序不使用 UIWebView,您应该制作一个存档,然后找到您的应用程序文件 (YourApp.app) 和 运行 里面的下一个脚本:
# Check the app with static libraries
echo "YourApp"
nm YourApp | grep UIWebView
# Check dynamic frameworks
for framework in Frameworks/*.framework; do
fname=$(basename $framework .framework)
echo $fname".framework"
nm $framework/$fname | grep UIWebView
done
在提交我的最新版本时,Apple 回应了这个警告。
ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview for more information.
仅供参考,我已经根据 Apple 的推荐将我项目中的所有 UIWebView 组件迁移到 WKWebView 组件,但 Apple 仍然以相同的警告响应。
除了在 Xcode 中使用搜索功能之外,是否有任何方法可以搜索仍然附加到我的项目的任何 UIWebView 元素?
嘿,我试着在 Xcode 中搜索。 一些第三方图书馆使用了它。 (以 FBSDK 为例) 我更新了这些库,但这还不够。
在下一次上传时,可怕的电子邮件再次到达。
并且在评论中有人提到 grep
是药。
所以我尝试了grep -r UIWebView /Path/To/Project/*
并且它发现了几个也使用 UIWebView 的二进制框架。 (GoogleSignin、Crashlytics ...) 我也更新了那些。
在下一次上传时没有可怕的电子邮件 :D
您可以在您的项目中使用以下命令行找到。
$ cd yourprojectpath
$ grep -r "UIWebView" .
grep -r UIWebView
适用于源,但部分适用于第 3 方二进制文件,因为从一方面来说,它们可以包含 UIWebView 的引用、注释或字符串数据,而无需实际使用 API,而从另一方面来说,它们可以使用它但没有任何参考。
要检查二进制文件(应用程序、静态库或动态框架),您应该使用 nm
获取符号 table(llvm 符号 table dumper),例如:
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
对于框架,您应该对其二进制文件执行相同的操作:
nm MyFramework.framework/MyFramework | grep UIWebView
最后,为了确保应用程序不使用 UIWebView,您应该制作一个存档,然后找到您的应用程序文件 (YourApp.app) 和 运行 里面的下一个脚本:
# Check the app with static libraries
echo "YourApp"
nm YourApp | grep UIWebView
# Check dynamic frameworks
for framework in Frameworks/*.framework; do
fname=$(basename $framework .framework)
echo $fname".framework"
nm $framework/$fname | grep UIWebView
done