我正在使用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文件进行正确的更新来解决此问题,如果不能,可以通过绑定库中的局部类来解决它,您将如何着手呢?