You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Android绑定LogRocket AAR库时类缺失错误求助

解决LogRocket Android AAR绑定Xamarin时的BG8605警告与类移除问题

问题现象

绑定LogRocket Android的AAR库时,出现以下编译警告与类移除提示:

obj/Debug/api.xml.class-parse : warning BG8605: The Java type 'com.logrocket.protobuf.Internal.MapAdapter.Converter<java.lang.Integer, T>' could not be found (are you missing a Java reference jar/aar or a Java binding library NuGet?)
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Bindings.ClassParse.targets(38,5): obj/Debug/api.xml.class-parse warning BG8605: The Java type 'com.logrocket.protobuf.Internal.MapAdapter.Converter<java.lang.Integer, T>' could not be found (are you missing a Java reference jar/aar or a Java binding library NuGet?)
obj/Debug/api.xml.class-parse : warning BG8605: The Java type 'com.logrocket.protobuf.SmallSortedMap<FieldDescriptorType, java.lang.Object>' could not be found (are you missing a Java reference jar/aar or a Java binding library NuGet?)
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Bindings.ClassParse.targets(38,5): obj/Debug/api.xml.class-parse warning BG8605: The Java type 'com.logrocket.protobuf.SmallSortedMap<FieldDescriptorType, java.lang.Object>' could not be found (are you missing a Java reference jar/aar or a Java binding library NuGet?)
obj/Debug/api.xml.class-parse : warning BG8605: The Java type 'java.security.PrivilegedExceptionAction<sun.misc.Unsafe>' could not be found (are you missing a Java reference jar/aar or a Java binding library NuGet?)
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Bindings.ClassParse.targets(38,5): obj/Debug/api.xml.class-parse warning BG8605: The Java type 'java.security.PrivilegedExceptionAction<sun.misc.Unsafe>' could not be found (are you missing a Java reference jar/aar or a Java binding library NuGet?)
The class '[Class] com.logrocket.protobuf.Internal.MapAdapter.1' was removed because the Java implemented interface type 'com.logrocket.protobuf.Internal.MapAdapter.Converter<java.lang.Integer, T>' could not be found.
The class '[Class] com.logrocket.protobuf.SmallSortedMap.1' was removed because the Java base type 'com.logrocket.protobuf.SmallSortedMap<FieldDescriptorType, java.lang.Object>' could not be found.
The class '[Class] com.logrocket.protobuf.UnsafeUtil.1' was removed because the Java implemented interface type 'java.security.PrivilegedExceptionAction<sun.misc.Unsafe>' could not be found.

已知该库仅依赖androidx.annotation:annotation:1.1.0。

解决方法

1. 通过Metadata.xml排除内部匿名类

被移除的MapAdapter.1、SmallSortedMap.1、UnsafeUtil.1均为库内部的匿名实现类,无需对外暴露。在绑定项目的Metadata.xml中添加以下规则:

<remove-node path="/api/package[@name='com.logrocket.protobuf.Internal.MapAdapter']/class[@name='1']" />
<remove-node path="/api/package[@name='com.logrocket.protobuf.SmallSortedMap']/class[@name='1']" />
<remove-node path="/api/package[@name='com.logrocket.protobuf.UnsafeUtil']/class[@name='1']" />

2. 忽略BG8605类型缺失警告

这些警告源于库内部未对外暴露的泛型类,不影响核心功能使用。在绑定项目的.csproj文件中添加属性,禁止该警告:

<PropertyGroup>
  <AndroidClassParserWarnings>$(AndroidClassParserWarnings);-BG8605</AndroidClassParserWarnings>
</PropertyGroup>

3. 确认依赖完整性

  • 确保绑定项目已安装Xamarin.AndroidX.Annotation NuGet包(对应依赖的androidx.annotation:annotation:1.1.0)。
  • 若仍有问题,可尝试添加Protobuf Java库作为绑定项目的引用,但多数情况下上述步骤已足够解决问题。

4. 处理sun.misc.Unsafe相关问题

sun.misc.Unsafe是Java内部受限API,Xamarin默认不支持绑定。可在Metadata.xml中调整其可见性或移除相关节点:

<!-- 将PrivilegedExceptionAction设为内部可见 -->
<attr path="/api/package[@name='java.security']/interface[@name='PrivilegedExceptionAction']" name="visibility">internal</attr>

或直接移除相关节点(若UnsafeUtil的功能不影响LogRocket核心调用):

<remove-node path="/api/package[@name='com.logrocket.protobuf']/class[@name='UnsafeUtil']" />

总结

这类问题属于Xamarin绑定Android库时常见的内部实现类处理问题,通过调整绑定规则、忽略无关警告,即可完成绑定且不影响LogRocket的正常使用。

内容的提问来源于stack exchange,提问作者bulubuloa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 05:53:22