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
相关产品推荐
相关产品推荐

