错误CS0234:类型或命名空间名称
IBitmap' does not exist in the namespace
Com.Sushi.Hangover'。你错过了装配参考吗?
我有一个Android绑定项目,其中包含从多个接口继承的类,但这些接口尚未生成,因此所有依赖它们的公共类都无法绑定。
abstract interface Bitmap
{
~~~ (methods removed)
}
<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访问权限
答案 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.