Maui跨平台开发方案
基于Maui 开发一款跨组跨平台Android《语音助手》项目,背景:对接输入源算法组提供so模型动态库,执行指令。由于初次尝试开发Maui 跨平台调用so动态库,整体项目遇到了一些问题,记录一下。
整体解决方案:
1 本次开发结合两种编译器Android Studio和Visual Studio
使用Andriod Studio 封装so动态库并编译成aar包,Visual Studio开发Maui项目。
2 在Maui中尝试调用So动态库的遇到无法找到函数入口。
对此采用NDK编译打包了一个 libtest.so 测试。验证了,JNI 的.so 是给Java 虚拟机调用的,用 .net无法调用。.net 可以调用标准C风格的 Add1函数,不能调用Add函数。对算法Jni的so库(非标准C接口库的so),封装了简单的demo aar 验证, 跨平台.net 可以调用得到结果。
参考:https://www.cnblogs.com/pylblog/p/17668994.html
3 Android 中Java/Kotlin调用Jni so动态库规则,根据package 包名去合成到动态库Jni函数,Package 包名需要和Java后匹配
4 Maui创建Java绑定库绑定aar包供Maui调用
注意:修改asrandroidwrapper-debug.aar 属性为LibraryProjectZip。编译如果存在java 与C# 接口冲突建议直接在Android Studio 修改Android 源码最直接。如果是第三方的aar(Maven Central 或 JCenter),编译出现问题需要Metadata.xml文件。
例如: utilcodex-1.31.0.aar
包下载地址:https://mvnrepository.com/?__cf_chl_rt_tk=uY9lyW32tqBPyh1XsykqdYzEtlTrqQjui.pBcZDnKFI-1723685132-0.0.1.1-4522
Java 绑定元数据官方文档
https://learn.microsoft.com/zh-cn/previous-versions/xamarin/android/platform/binding-java-library/customizing-bindings/java-bindings-metadata
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现