我正在尝试为ACR1225U蓝牙读卡器构建一个与Android绑定的Xamarin绑定项目。
在添加AAR文件之后,我很难通过第一个构建。生成的文件之一是实现一个与其实现的接口上定义的方法不匹配的方法。我得到了下面的例外。
'GetPropertyAction' does not implement interface member 'IPrivilegedAction.Run()'. 'GetPropertyAction.Run()' cannot implement 'IPrivilegedAction.Run()' because it does not have the matching return type of 'Object'.自动生成的代码是:
[Register ("run", "()Ljava/lang/String;", "GetRunHandler")]
public virtual unsafe string Run ()任何想法都将不胜感激!
谢谢。
发布于 2019-09-04 02:29:50
您需要将managedReturn类型的GetPropertyAction.Run()更改为Object,但不确定是System.Object还是Java.Lang.Object。我猜是Java.Lang.Object。
managedReturn更改方法的返回类型。这不会更改返回属性(因为对返回属性的更改可能导致对JNI签名的不兼容更改)。在下面的示例中,追加方法的返回类型从SpannableStringBuilder更改为IAppendable (回想一下C#不支持协变量返回类型):
<attr path="/api/package[@name='<replace.with.the.actual.name.of.the.package.in.java>']/
class[@name='GetPropertyAction']/
method[@name='Run']"
name="managedReturn">Java.Lang.Object</attr>像这样的东西应该管用。
https://stackoverflow.com/questions/57772724
复制相似问题