Java绑定抽象类未生成

时间:2016-04-15 13:45:30

标签: binding xamarin xamarin.android

  

错误CS0234:类型或命名空间名称IBitmap' does not exist in the namespace Com.Sushi.Hangover'。你错过了装配参考吗?

我有一个Android绑定项目,其中包含从多个接口继承的类,但这些接口尚未生成,因此所有依赖它们的公共类都无法绑定。

Java类:

abstract interface Bitmap
{
   ~~~ (methods removed)
}

api.xml:

<interface abstract="true" deprecated="not deprecated" final="false" name="Bitmap" static="false" visibility="">

正如您所看到的,此接口的visibility未设置为public,因此未生成C#代码,但会生成依赖于此接口的公共类:

public partial class DrawableDesign : global::Com.Sushi.Hangover.IBitmap {

绑定在将接口名称从Bitmap转换为IBitmap时知道接口。

  

有没有办法强制创建这些接口而不返回Java代码并将这些接口更改为public以将它们作为api.xml进入visibility="public"

注意:我在稳定频道(Xamarin.Android版本:6.0.3.5),因为此客户端没有Alpha / Beta访问权限

2 个答案:

答案 0 :(得分:6)

我写了一篇关于这个主题的小指南,可能对某些方面有所帮助:https://gist.github.com/JonDouglas/dda6d8ace7d071b0e8cb

简而言之,您可能会尝试更改@Cheesebaron已经提到的可见性:https://gist.github.com/JonDouglas/dda6d8ace7d071b0e8cb#class-visibility(使用接口替换/类或读取公共路径)

否则,您可能会尝试从头开始添加节点:https://gist.github.com/JonDouglas/dda6d8ace7d071b0e8cb#adding-types

要获得更准确的答案,我相信我们需要查看相应的.jar / .aar和当前的Bindings项目。

答案 1 :(得分:2)

In your binding library inside of the Transforms/Metadata.xml file you can change the visibility by adding the following line:

<attr path="/api/package[@name='com.sushi.hangover']/interface[@name='IBitmap']" name="visibility">public</attr>

Given that the package name in Java world is com.sushi.hangover and interface name is IBitmap.

You can read some more about the format of attr in the GAPI mono documentation. There is also some nice bindings documentation in the Xamarin Docs.