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

MAUI项目绑定Android .aar库后出现JNIEnv相关编译错误

MAUI绑定含jna-4.5.1.jar的aar库时JNIEnv错误解决方案

我在MAUI项目中绑定名为autoreplyprint.aar的Android库,该库包含jna-4.5.1.jar文件,绑定配置代码如下:

<ItemGroup Condition="$(TargetFramework.Contains('-android'))">
        <LibraryProjectZip Include="Libs/autoreplyprint.aar" />
</ItemGroup>

绑定后生成了自动生成文件,但多数文件存在错误,其中与jna-4.5.1.jar相关的错误为:Error : 'JNIEnv' does not contain a definition for 'GetString'。单独绑定jna-4.5.1.jar时也出现相同错误,确认问题源于该jar文件。


解决方法

  • 添加元数据文件修正绑定规则
    在绑定项目的Transforms目录下创建Metadata.xml文件,添加以下内容调整JNIEnv的方法映射:

    <metadata>
      <remove-node path="/api/package[@name='com.sun.jni']/class[@name='JNIEnv']/method[@name='GetString']" />
      <add-node path="/api/package[@name='com.sun.jni']/class[@name='JNIEnv']">
        <method name="GetString" return-type="java.lang.String">
          <parameter name="string" type="jstring" />
        </method>
      </add-node>
    </metadata>
    

    该操作会移除自动生成的错误方法定义,重新添加符合MAUI Android绑定规范的方法声明。

  • 排除冲突的jna类(按需使用)
    若jna-4.5.1.jar中的类与MAUI Android运行时存在冲突,可在Metadata.xml中添加排除规则:

    <metadata>
      <remove-node path="/api/package[@name='com.sun.jni']" />
      <remove-node path="/api/package[@name='com.sun.jna']" />
    </metadata>
    

    注意:仅当autoreplyprint.aar不依赖这些类的公开调用时使用,否则需保留并调整绑定规则。

  • 替换兼容版本的jna库
    jna-4.5.1版本较旧,可能与MAUI绑定工具链不兼容。尝试将aar中的jna-4.5.1.jar替换为较新的稳定版本(如jna-5.13.0.jar),重新打包aar后再执行绑定操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:14:53