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

使用BlackBerry Dynamics动态SDK时,Windows端VS构建Xamarin iOS应用失败

解决Windows端Visual Studio配对Mac构建代理构建BlackBerry Dynamics动态版Xamarin iOS应用的原生链接失败问题

问题背景

我们正从BlackBerry Dynamics SDK for Xamarin iOS的静态版本切换至新的动态版本。新版本中GoodDynamics.iOS.dll不再包含所有资源,而是依赖同目录下的GoodDynamics.iOS.resources文件夹内容。但通过Windows端Visual Studio配对Mac构建代理构建时,出现原生链接失败,提示找不到libGD_CPPWrapper.a等资源文件,而Mac本地Visual Studio可正常构建。

操作步骤

  • 下载BlackBerry Dynamics SDK for Xamarin iOS 10.1.0.663版本
  • 提取其中的Examples解决方案并加载到Visual Studio
  • 修改项目info.plist中的bundle id适配配置文件以完成签名
  • 构建项目

错误日志

1>C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(235,3): warning MT1302: Could not extract the native library 'libGD_CPPWrapper.a' from '/Users/{UserName}/Library/Caches/Xamarin/mtbs/builds/GreetingsClient/dafdd80e9da4129fe5916d9283ff66211b655dba54eca9615ebdc599e5fa50eb/obj/iPhone/Debug/mtouch-cache/libGD_CPPWrapper.a'. Please ensure the native library was properly embedded in the managed assembly (if the assembly was built using a binding project, the native library must be included in the project, and its Build Action must be 'ObjcBindingNativeLibrary').
1>C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(235,3): error : no such file or directory: '/Users/{UserName}/Library/Caches/Xamarin/mtbs/builds/GreetingsClient/dafdd80e9da4129fe5916d9283ff66211b655dba54eca9615ebdc599e5fa50eb/obj/iPhone/Debug/mtouch-cache/libGD_CPPWrapper.a'
1>C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(235,3): error : clang: error: no such file or directory: '/Users/{UserName}/Library/Caches/Xamarin/mtbs/builds/GreetingsClient/dafdd80e9da4129fe5916d9283ff66211b655dba54eca9615ebdc599e5fa50eb/obj/iPhone/Debug/mtouch-cache/libGD_CPPWrapper.a'

解决方案

1. 确保资源文件夹被正确纳入项目

  • 右键Xamarin iOS项目 → 添加 → 现有文件夹,选中GoodDynamics.iOS.resources文件夹
  • 选中该文件夹内所有文件(包括libGD_CPPWrapper.a和xcframework目录),在属性面板设置:
    • 生成操作:Content
    • 复制到输出目录:如果较新则复制

2. 修改MSBuild配置强制同步资源到Mac代理

打开项目的.csproj文件,添加以下配置,确保资源文件被同步到Mac端的构建缓存目录:

<ItemGroup>
  <BundleResource Include="GoodDynamics.iOS.resources\**\*">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    <Visible>false</Visible>
  </BundleResource>
</ItemGroup>

<Target Name="CopyGDResourcesToMac" BeforeTargets="_CopyResourcesToMac">
  <Copy SourceFiles="@(BundleResource)" DestinationFiles="@(BundleResource->'$(IntermediateOutputPath)mtouch-cache\%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>

3. 清理缓存并重启构建环境

  • 在Windows端Visual Studio中执行生成 → 清理解决方案
  • 关闭Visual Studio,删除项目的bin和obj目录
  • 登录Mac代理,删除/Users/{UserName}/Library/Caches/Xamarin/mtbs/builds下对应项目的缓存文件夹
  • 重新打开Visual Studio,重新构建项目

4. 验证SDK引用路径

确认项目中GoodDynamics.iOS.dll的引用路径正确,且GoodDynamics.iOS.resources文件夹与dll处于同一目录。若使用NuGet包,检查包是否完整安装,资源文件夹已被正确还原。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:10:35