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".

删除文件夹 binobj 并重建项目没有帮助。我也看了文档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