【问题标题】:Monodroid .jar Binding IssueMonodroid .jar 绑定问题
【发布时间】:2023-05-26 07:09:01
【问题描述】:

我正在尝试使用 Facebook SDK 修复一些绑定错误。我在同一个类中有两个具有相同名称“setPermissions”的函数。 Monodroid 绑定生成器生成的IntPtr 为每个id_setPermissions_Ljava_util_List_ 创建相同的变量名。我需要通过将其中一个函数更改为不同的名称来解决此问题,以便绑定生成器不会创建相同的变量名称。

在弄清楚我需要在Metadata.xml 文件中设置什么时,我陷入了困境。到目前为止我有这个:

<attr path="/api/package[@name='com.facebook']/class[@name='Session.OpenRequest']/method[@name='setPermissions']" name="managedName">OpenRequestSetPermission</attr>

上述行的问题会将两个函数更改为相同的名称,而不是解决我在生成的static IntPtr id_setPermissions_Ljava_util_List_; 时遇到的问题

它们有不同的返回类型,但我不知道这是否有助于确定Metadata.xml 中的一个函数优于另一个函数。

【问题讨论】:

  • 您能否给出\obj\Debug\api.xml 的适当sn-p 这可能有助于找到区分功能的方法。

标签: facebook binding xamarin.android xamarin


【解决方案1】:

有一些方法可以通过名称和签名来确定函数。 例如,如果你有函数

int remove(int a);
int remove(int a, object b);
int remove(float a, object b);

你可以通过

找到第二个
<attr path="/api/package[@name='org.mapsforge.android.maps.overlay']/class[@name='OverlayList']/method[@name='remove' and count(parameter)=2 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object</attr>

也许有办法通过返回类型过滤函数,遗憾的是我不知道。

【讨论】: