【问题标题】:Xamarin Android Bindings For Markwon LibraryMarkwon 库的 Xamarin Android 绑定
【发布时间】:2021-01-10 14:48:23
【问题描述】:

我正在尝试为库生成 Xamarin 绑定:

https://github.com/noties/Markwon

https://repo1.maven.org/maven2/io/noties/markwon/core/4.6.1/core-4.6.1.aar

我还没有修改metadata.xml 或任何东西。我已将 aar 添加为 LibraryProjectZip,但在尝试编译时遇到问题。

0>obj/Debug/generated/src/IO.Noties.Markwon.SpannableBuilder.cs(10,68):错误 CS0738:“SpannableBuilder”未实现接口成员 'IAppendable.Append(char)'。 'SpannableBuilder.Append(char)' 不能 实现 'IAppendable.Append(char)' 因为它没有 匹配“IAppendable”的返回类型。

0>obj/Debug/generated/src/IO.Noties.Markwon.SpannableBuilder.cs(10,68):错误 CS0738:“SpannableBuilder”未实现接口成员 'IAppendable.Append(ICharSequence?)'。 'SpannableBuilder.Append(ICharSequence)' 无法实现 'IAppendable.Append(ICharSequence?)' 因为它没有 匹配“IAppendable”的返回类型。

0>obj/Debug/generated/src/IO.Noties.Markwon.SpannableBuilder.cs(10,68):错误 CS0738:“SpannableBuilder”未实现接口成员 'IAppendable.Append(ICharSequence?, int, int)'。 'SpannableBuilder.Append(ICharSequence, int, int)' 无法实现 'IAppendable.Append(ICharSequence?, int, int)' 因为它没有 具有匹配的返回类型“IAppendable”。

0>obj/Debug/generated/src/IO.Noties.Markwon.Utils.NoCopySpannableFactory.cs(56,79): 警告 CS0108:“NoCopySpannableFactory.Instance”隐藏继承 成员“SpannableFactory.Instance”。如果 hidden 是,则使用 new 关键字 有意的。

出于测试目的,如果我从SpannableBuilder 的接口中删除global::Java.Lang.IAppendable,我会走得更远,但它会在Java 问题上中断:

1>obj/Debug/android/src/mono/io/noties/markwon/core/CorePlugin_OnTextAddedListenerImplementor.java(4,8): 错误 JAVAC0000 javac:错误: CorePlugin_OnTextAddedListenerImplementor 不是抽象的,也不 覆盖抽象方法 onTextAdded(MarkwonVisitor,String,int) in OnTextAddedListener 公共类 CorePlugin_OnTextAddedListenerImplementor

该类的生成代码在这里:

package mono.io.noties.markwon.core;


public class CorePlugin_OnTextAddedListenerImplementor
    extends java.lang.Object
    implements
        mono.android.IGCUserPeer,
        io.noties.markwon.core.CorePlugin.OnTextAddedListener
{
/** @hide */
    public static final String __md_methods;
    static {
        __md_methods = 
            "";
        mono.android.Runtime.register ("IO.Noties.Markwon.Core.CorePlugin+IOnTextAddedListenerImplementor, Markwon", CorePlugin_OnTextAddedListenerImplementor.class, __md_methods);
    }


    public CorePlugin_OnTextAddedListenerImplementor ()
    {
        super ();
        if (getClass () == CorePlugin_OnTextAddedListenerImplementor.class)
            mono.android.TypeManager.Activate ("IO.Noties.Markwon.Core.CorePlugin+IOnTextAddedListenerImplementor, Markwon", "", this, new java.lang.Object[] {  });
    }

    private java.util.ArrayList refList;
    public void monodroidAddReference (java.lang.Object obj)
    {
        if (refList == null)
            refList = new java.util.ArrayList ();
        refList.add (obj);
    }

    public void monodroidClearReferences ()
    {
        if (refList != null)
            refList.clear ();
    }
}

【问题讨论】:

    标签: java c# xamarin.android


    【解决方案1】:

    我根据这个 SO 答案接受了建议:https://stackoverflow.com/a/24169499/14977771

    并创建了一个简单的包装器来调用我需要的函数。我的包装器.aar 文件添加为LibraryProjectZip,然后将markwon 库(及其依赖的jar)添加为EmbeddedReferenceJar

    它允许我只包装/调用我需要使用的函数,而无需为整个库创建绑定。

    【讨论】:

    • 别忘了稍后标记这个答案,这将帮助更多有同样问题的人:)。
    猜你喜欢
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 2015-09-17
    • 1970-01-01
    相关资源
    最近更新 更多