xamarin.android Java.Lang.NoSuchMethodError
xamarin.android Java.Lang.NoSuchMethodError
我已经通过 .aar 创建了一个 xamarin.android 绑定库,需要对其进行初始化。当我调用本机 Start
方法时出现错误:
Java.Lang.NoSuchMethodError
no static method "Lpackage/name/SDK;.start(Landroid/content/Context;Lpackage/name/Configuration;)V".
删除文件夹 bin
和 obj
并重建项目没有帮助。我也看了文档api.xml
这个方法是有的,可以参考一下。在 Metadata.xml
中删除或添加方法也无济于事。
有什么建议或想法吗?
我一直在寻找问题的根源很长一段时间,显然我找到了。我查看了 classes.dex
文件,发现我没有 SDK
类型,只有 SDK$-CC
类型。
Class #0 -
Class descriptor : 'Lpackage/name/SDK$-CC;'
Access flags : 0x1011 (PUBLIC FINAL SYNTHETIC)
Superclass : 'Ljava/lang/Object;'
Interfaces -
Static fields -
Instance fields -
Direct methods -
#0 : (in Lpackage/name/SDK$-CC;)
name : 'start'
type : '(Landroid/content/Context;Lpackage/name/SDK$Configuration;)V'
access : 0x0009 (PUBLIC STATIC)
code -
registers : 3
ins : 2
outs : 3
insns size : 6 16-bit code units
catches : (none)
positions :
locals :
Virtual methods -
source_file_idx : 8937 (SDK.kt)
我将寄存器的名称从 [Register ("package/name/SDK", "", "Package.Name.INameInvoker")]
更改为 [Register ("package/name/SDK$-CC", "", "Package.Name.INameInvoker")]
。
完整的解释在这里:https://github.com/xamarin/xamarin-android/issues/6784
我已经通过 .aar 创建了一个 xamarin.android 绑定库,需要对其进行初始化。当我调用本机 Start
方法时出现错误:
Java.Lang.NoSuchMethodError
no static method "Lpackage/name/SDK;.start(Landroid/content/Context;Lpackage/name/Configuration;)V".
删除文件夹 bin
和 obj
并重建项目没有帮助。我也看了文档api.xml
这个方法是有的,可以参考一下。在 Metadata.xml
中删除或添加方法也无济于事。
有什么建议或想法吗?
我一直在寻找问题的根源很长一段时间,显然我找到了。我查看了 classes.dex
文件,发现我没有 SDK
类型,只有 SDK$-CC
类型。
Class #0 -
Class descriptor : 'Lpackage/name/SDK$-CC;'
Access flags : 0x1011 (PUBLIC FINAL SYNTHETIC)
Superclass : 'Ljava/lang/Object;'
Interfaces -
Static fields -
Instance fields -
Direct methods -
#0 : (in Lpackage/name/SDK$-CC;)
name : 'start'
type : '(Landroid/content/Context;Lpackage/name/SDK$Configuration;)V'
access : 0x0009 (PUBLIC STATIC)
code -
registers : 3
ins : 2
outs : 3
insns size : 6 16-bit code units
catches : (none)
positions :
locals :
Virtual methods -
source_file_idx : 8937 (SDK.kt)
我将寄存器的名称从 [Register ("package/name/SDK", "", "Package.Name.INameInvoker")]
更改为 [Register ("package/name/SDK$-CC", "", "Package.Name.INameInvoker")]
。
完整的解释在这里:https://github.com/xamarin/xamarin-android/issues/6784