如何解决上载Xamarin应用程式时无法解决UIWebView警告的弃用问题
我已经关注博客https://devblogs.microsoft.com/xamarin/uiwebview-deprecation-xamarin-forms/,以删除项目中的UIWebView依赖项。
根据文档
1)xamarin.forms版本是4.6 2)xamarin.ios版本是13.20 3)我在mtouch Arguments中添加了命令,链接器是link All
在更新版本以测试飞行时,我仍然收到警告
然后,我遵循本文档https://docs.microsoft.com/en-us/xamarin/ios/release-notes/13/13.16#help-with-uiwebview-deprecation,从中可以找到我们的应用程序中是否仍在使用UIWebView。在构建输出中,我将获得以下介绍。
MTOUCH : warning MT1502: One or more reference(s) to type 'UIKit.UIWebView' already exists inside 'Xamarin.Forms.Platform.iOS,Version=2.0.0.0,Culture=neutral,PublicKeyToken=null' before linking
我不确定为什么Xamarin包中的Xamarin.Forms.Platform.iOS中存在引用,因为博客已将其更新为4.6。
有人可以帮我摆脱这个警告吗?
解决方法
请遵循此link
只需转到您的iOS项目,打开项目属性,然后在 您的
中的“其他mtouch参数字段:--optimize = experimental-xforms-product-type” ,使用WKWebView代替UIWebView。 UIWebView已过时,现在,App Store从2020年4月起将不再接受使用UIWebView的新应用。
using System.IO;
using CustomRenderer;
using CustomRenderer.iOS;
using Foundation;
using UIKit;
using WebKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly: ExportRenderer(typeof(CustomWebView),typeof(WebViewRender_iOS))]
namespace CustomRenderer.iOS
{
public class WebViewRender_iOS : WkWebViewRenderer
{
WKUserContentController userController;
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
if (e.OldElement != null)
{
userController.RemoveAllUserScripts();
userController.RemoveScriptMessageHandler("invokeAction");
CustomWebView hybridWebView = e.OldElement as CustomWebView;
hybridWebView.Cleanup();
}
if (e.NewElement != null)
{
CustomWebView hybridWebView = e.NewElement as CustomWebView;
LoadRequest(new NSUrlRequest(new NSUrl(hybridWebView._WebURI)));
}
}
}
}
,要淘汰弃用警告,需要进行一些不同的更改。
- iOS Build部分中用于上传到商店(发行版| iPhone,App Store | iPhone等)的构建配置需要以下其他mtouch参数
--optimize=experimental-xforms-product-type
- 如果使用Material Visual,则应用程序需要使用Xamarin.Forms版本> = 4.5或> = 4.6
- 它还需要使用Xamarin.iOS 13.10.0.17或更高版本,该版本包含在Visual Studio for Mac 8.4.1和Visual Studio 16.4.3中。
- 在代码库中删除对
UIWebView
的所有引用
docs中包含更多信息,如果不能解决此问题,则该应用程序可能正在使用第三方库,其中引用了UIWebView
,要么需要更新到一个版本,或完全从应用程序中删除。
谢谢大家的建议。以下是对我有用的。
-
请遵循中提到的3个步骤 https://devblogs.microsoft.com/xamarin/uiwebview-deprecation-xamarin-forms/
-
在存储库级别运行
grep -r UIWebview .
。它将显示.sln和第三方软件包中的引用列表 -
删除或更新第三方库。 Igore bin和obj文件夹
对我来说,我必须
1。删除不推荐使用的scanbot.xamarin.ios SDK,并添加scanbot.xamarin pkg
2。删除曲棍球应用程序SDK,因为它已过时且没有任何更新
3。删除项目中未使用的googleanalytics SDK
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。