具有私有嵌套接口的Xamarin绑定库

时间:2019-06-01 19:49:13

标签: xamarin.android stripe-payments

我正在使用Stripe Terminal aar软件包(用于Android)构建Xamarin应用。为Stripe Terminal软件包创建Android绑定库后,我可以使用以下对Metadata.xml文件的更新来使其进行编译

<remove-node path="/api/package[@name='com.stripe.stripeterminal']/class[@name='DaggerTerminalComponent']" />
<remove-node path="/api/package[@name='com.stripe.stripeterminal']/interface[@name='ErrorCallback']" />
<remove-node path="/api/package[@name='com.stripe.stripeterminal']/interface[@name='BbposBluetoothAdapter']" />  
<attr path="/api/package[@name='com.stripe.stripeterminal']/interface[@name='ErrorCallback']" name="visibility">public</attr>  
<attr path="/api/package[@name='com.stripe.stripeterminal']/class[@name='Terminal']" name="managedName">StripeTerminal</attr>

问题是通过删除ErrorCallback接口,它删除了所有Java类以及扩展该接口的方法。如果我添加以下内容

<attr path="/api/package[@name='com.stripe.stripeterminal']/interface[@name='ErrorCallback']" name="visibility">public</attr>

我可以做得更好,然后返回我需要的方法,例如下面的方法,“回调扩展了ErrorCallback”

public Cancelable discoverReaders(DiscoveryConfiguration config, DiscoveryListener discoveryListener, Callback callback)

然后,java抱怨ErrorCallback是私有的,在构建Android项目时出现此错误。查看Xamarin输出的Java代码,它在要扩展的接口列表中包括ErrorCallback。

  

错误:com.stripe.stripeterminal中的ErrorCallback不是公开的;不能从外包装中访问

可以通过对Metadata.xml文件进行正确的更新来解决此问题,如果不能,可以通过绑定库中的局部类来解决它,您将如何着手呢?

0 个答案:

没有答案