Xamarin + Android + Binding YouTube 视频播放器编译错误
Posted
技术标签:
【中文标题】Xamarin + Android + Binding YouTube 视频播放器编译错误【英文标题】:Xamarin + Android + Binding YouTube video player compile errors 【发布时间】:2017-03-10 11:56:48 【问题描述】:我希望将 YouTubeandroidPlayerApi.jar 绑定到我的 Xamarin Android 项目中。我在我的 Jars 文件夹下添加了 YouTubeAndroidPlayerApi.jar,但我的项目无法编译。
错误:“不要覆盖 object.Finalize。而是使用析构函数。”
所以我尝试通过使用一个来改变它的编译方式:
<attr path="/api/package[@name='Com.Google.Android.Youtube.Player']/class[@name='YouTubeThumbnailView']/method[@name='Finalize']" name="managedName">~YouTubeThumbnailView</attr>
在 Transforms 文件夹下的 Metadata.xml 文件中...虽然它似乎没有将其更改为终结器...我继续在这里使用语法,希望我偶然发现一些有效的东西.
这是正确的方法吗?还有什么我可以做的更好的解决方案吗?我真的很想得到一些反馈。
谢谢!
【问题讨论】:
【参考方案1】:您应该能够相当轻松地删除它。但是,<attr>
中的问题是您的包名/类名不正确,因为它应该遵循 Java 约定 (<lowercase package>.<propercase class>
)。只需确保以下示例的情况:
前:
<remove-node path="/api/package[@name='com.google.android.youtube.player']/class[@name='YouTubeThumbnailView']/method[@name='finalize' and count(parameter)=0]" />
【讨论】:
我想我已经在路上了,谢谢!我确实有一些区分大小写的问题。感谢您的帮助!!! 如果您遇到任何其他问题,请参阅我的装订指南! gist.github.com/JonDouglas/dda6d8ace7d071b0e8cb 谢谢!我已将它添加到我的收藏夹。非常感谢您的帮助! @JonDouglas 你好.. 我的绑定也有同样的问题。我尝试了这两种情况,我得到了同样的错误。我也尝试了 remove-node 并且它抛出错误严重代码描述项目文件行抑制状态错误“javadoc-to-mdoc.exe”退出代码1。 打开一个新问题,那个错误信息说的是完全不同的东西!【参考方案2】:如果您添加remove-node
,您将删除finalizer
,并且永远不会调用finalize
方法下的代码。
如果您想在析构函数中重用finalize
实现,可以将以下内容添加到您的Metadata.xml
文件中:
<!--
YouTubeThumbnailView class implemented a Java Finalizer. I have to implement a C# Destructor and call the finalize method.
The C# Destructor is in the partial class under the Addition folder.
-->
<!-- I change the name of the finalizer method to avoid the conflict with java finalizer -->
<attr path="/api/package[@name='com.google.android.youtube.player']/class[@name='YouTubeThumbnailView']/method[@name='finalize' and count(parameter)=0]" name="managedName">InternalFinalize</attr>
<!-- I replace the protected override modifier with the internal modifier -->
<attr path="/api/package[@name='com.google.android.youtube.player']/class[@name='YouTubeThumbnailView']/method[@name='finalize' and count(parameter)=0]" name="visibility">internal</attr>
注意需要可见性修饰符才能删除 override
修饰符。
那么你应该在Additions
文件夹下添加如下类:
namespace Com.Google.Android.Youtube.Player
public partial class YouTubeThumbnailView
~YouTubeThumbnailView()
this.InternalFinalize();
【讨论】:
以上是关于Xamarin + Android + Binding YouTube 视频播放器编译错误的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms 是 Xamarin.Android、Xamarin.IoS 和 Xamarin.Win 的简单总和吗?
xamarin android开发 两个按钮 怎么放在同一排上
抽屉布局在 Xamarin.Android.Support.Core.UI 和 Xamarin.Android.Support.V4 中都存在
无法使用 Xamarin.Android 中的 Xamarin.Mobile 组件保存联系人
将Xamarin.Android应用程序迁移到Xamarin.Forms应用程序
dotnet 5 和 Xamarin Android:找不到导入的项目“Xamarin.Android.CSharp.targets”