我正在尝试为库创建一个绑定,Firebase.Messaging,因为Nuget上的当前版本不是最新的,但是这个.aar库中的一个类没有被添加到绑定中 . 这是RemoteMessage.class .
当我反编译firebase-messaging.aar时,我确实看到.aar文件中存在RemoteMessage.class但是当我将这个.aar文件添加到我的绑定项目并运行时,我得到以下错误:
警告BG8604:找不到嵌套类型Firebase.Messaging.RemoteMessage.Builder的顶级祖先RemoteMessage . (BG8604)
这意味着例如该方法public override void OnMessageReceived(RemoteMessage message)
将不会添加到我的绑定,因为找不到RemoteMessage . 我试图通过使用 <add-note ...
手动将其添加到我的绑定,但到目前为止没有运气 .
在我的绑定中,我添加了对firebase-common,firebase-iid,googleplayservices-basement,googleplayservices-tasks的引用 .
有没有人知道如何强制我的绑定识别RemoteMessage类并将其添加到绑定?
编辑:我做的是为android创建一个新的Xamarin Binding项目,将aar文件添加到Jars文件夹并更新Metadata.xml
这是我目前使用的metadata.xml:
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<!-- Rename Namespaces -->
<attr path="/api/package[@name='com.google.firebase.messaging']" name="managedName">Firebase.Messaging</attr>
<!-- Remove *zz* obfuscated classes, interfaces, methods, etc. -->
<remove-node path="/api/package/class[contains(@name, 'zz')]" />
<remove-node path="/api/package/interface[contains(@name, 'zz')]" />
<remove-node path="/api/*/*/method[contains(@name, 'zz')]" />
<remove-node path="/api/*/*/field[contains(@name, 'zz')]" />
<!-- Fix params for some inherited parcelable types -->
<attr path="/api/*/*/method[@name='createFromParcel']/parameter[@name='p0']" name="managedName">source</attr>
<attr path="/api/*/*/method[@name='newArray']/parameter[@name='p0']" name="managedName">size</attr>
<attr path="/api/*/*/method[@name='writeToParcel']/parameter[@name='p0']" name="managedName">dest</attr>
<attr path="/api/*/*/method[@name='writeToParcel']/parameter[@name='p1']" name="managedName">flags</attr>
</metadata>
添加文件夹,EnumFields或EnumMethods中没有任何内容,目前我正在使用firebase-messaging-11.8.0.aar进行此绑定 .
在Binding之后,这是我在Assembly Browser中看到的结果:
1 回答
我已经弄清楚为什么RemoteMessage无法绑定,因此对于几个方法和类,无法找到顶级祖先 . GooglePlay地下室和任务库已更改 . 这导致了内部问题,因为依赖于混淆的类RemoteMessage现在再次不可见,我使用的元数据依赖于11.4.2但是从11.8.0开始,在任务库中找不到这个混淆的类,但在地下室库中,也有不同的名字 .
我已经添加了
对于Metadata.xml,
zzbfm
是RemoteMessage所依赖的类,因此是需要进行非模糊处理的类 .在我的Basement Metadata.xml中更新它并重新绑定Firebase.Messaging库后,RemoteMessage现在已正确绑定到库中并可访问 .