如何从.NET MAUI类库生成AAR与XCFramework供原生平台使用?
满足需求的.NET跨平台实现方案
1. .NET 7+原生打包能力直接搞定
.NET 7及后续版本已经原生支持将业务类库打包为Android/iOS原生格式,同时完美兼容Windows:
- Android端生成AAR:用
dotnet publish命令指定Android目标框架,直接输出AAR包,可直接导入Kotlin/Java项目调用:
生成的AAR自带JNI绑定层,不用手动写互操作代码。dotnet publish -f net7.0-android -c Release /p:AndroidPackageFormat=Aar - iOS端生成XCFramework:同样用
dotnet publish指定iOS目标框架,输出XCFramework,Swift项目直接集成即可:dotnet publish -f net7.0-ios -c Release /p:CreatePackage=true - Windows支持:类库直接编译为
net7.0-windows或更高版本,Windows应用可以直接引用调用,完全不需要额外处理。
2. 替代Embeddinator-4000的官方方案
Embeddinator-4000早就停更了,现在官方推荐用上述原生打包能力,配合内置工具优化互体验:
- Android端:SDK内置的绑定生成工具会自动生成Kotlin/Java可调用的类,省去手动写JNI的麻烦。
- iOS端:随.NET iOS SDK提供的
objc-gen工具会生成Objective-C绑定层,Swift可以直接调用这些绑定类,无缝衔接。
3. 为啥选.NET而不是KMM
你提到KMM适合移动端,但需要支持Windows的话,.NET方案优势明显:
- 一套代码同时覆盖Windows、Android、iOS,不用维护多平台逻辑分支,节省精力。
- 直接复用你已经在开发的.NET MAUI业务逻辑,不用重写代码。
- 依托.NET生态的工具链(NuGet、Visual Studio),跨平台开发的学习成本更低。
踩坑提示
- 类库要专注业务逻辑,别引入MAUI的UI组件,原生移动端不需要这些,反而会增加包体积和兼容性问题。
- 复杂异步逻辑要注意跨平台类型映射,比如把.NET的
Task转成Android的ListenableFuture或者iOS的Promise,避免出现线程阻塞或回调失败的问题。
内容的提问来源于stack exchange,提问作者mhsarosh
相关产品推荐
相关产品推荐

