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

Xamarin Android绑定库调用setLocalTime报GeneratedMessageLite类缺失问题

问题产生原因
  • 报错的根本原因是绑定库遗漏了两类依赖类:一是Polar SDK内部用Protobuf Lite生成的protocol.PftpRequest$PbPFtpSetLocalTimeParams请求参数类,二是Protobuf Lite基础库的com.google.protobuf.GeneratedMessageLite核心类。
  • 其他方法可以正常调用是因为这些方法的逻辑不需要用到Protobuf序列化的参数结构,只有setLocalTime()方法需要构造对应的Protobuf格式请求体,触发类加载时才会暴露缺失问题。
  • 做绑定的时候通常会为了减少警告,默认过滤掉非公开包路径的类,protocol包属于Polar SDK内部实现包,很容易被绑定规则排除,同时Protobuf Lite属于SDK的传递依赖,不会默认被包含进绑定产物。
修复方法
  • 第一步:调整绑定规则保留内部proto类
    打开绑定库项目的Transforms/Metadata.xml文件,删除所有针对protocol包的<remove-node>过滤规则,确保protocol包下的所有类都能被正常生成C#绑定包装。如果之前配置了只绑定指定包路径的公开类,需要把protocol包加入允许绑定的路径列表。
  • 第二步:补充Protobuf Lite依赖
    二选一即可:
    1. 把Polar SDK对应版本的protobuf-lite jar包加入绑定库项目,构建动作设置为EmbeddedJar,会直接把Protobuf Lite的类打包进你的绑定库产物,下游项目不需要额外安装依赖。
    2. 在使用绑定库的Xamarin Android项目中,直接安装对应版本的Xamarin.Google.Protobuf.Lite NuGet包即可。
  • 第三步:验证生效
    重新编译绑定库后,先检查生成的绑定代码中是否存在PftpRequest.PbPFtpSetLocalTimeParams对应的C#类,再调用setLocalTime()方法即可正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:54:01