问题标签 [xamarin-binding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 当我们在 Xamarin 绑定项目中使用第三方库时,无法运行 Xamarin.iOS 应用
我们正在开发一个 Xamarin.iOS 项目,该项目使用 MSAL 库进行身份验证。除了以下一项外,MSAL 中一切正常。
在随后的登录过程中,用户凭据不会被清除。它甚至无需输入密码即可自动登录应用程序。有关该问题的更多信息,请参阅以下链接。
在与 Microsoft 沟通后,我们了解到此功能仅适用于 Native MSAL 库。为了纠正这个问题,我们计划创建一个绑定项目(它将包含与 MSAL 相关的所有样板代码)并在我们的 Xamarin.iOS 应用程序中使用它。这样我们的应用程序就可以通过绑定项目与 MSAL 通信,并在注销时完全清除缓存。但是当我们在静态项目(iOS 框架应用程序)中包含 MSAL 库时,我们的应用程序没有与绑定项目一起运行。它在尝试运行我们的应用程序时没有显示任何错误或异常,它只是在编译完成后停止而没有任何日志。
我们为创建绑定项目所遵循的步骤。
完成上述步骤后,按照以下命令为给定的 Xcode 项目(框架)构建胖库。
为模拟器和设备构建 iOS 框架
对于iphonesimulator14.2
适用于 iphoneos14.2
复制一个构建作为胖框架。
将来自另一个构建的模块与胖框架模块结合起来。
将 iphoneos + iphonesimulator 配置组合为胖库。
验证创建的 fat 文件。
生成绑定 API 定义和结构。
或者,我们可以使用下面的脚本来生成 fat 文件。
创建 Xamarin.iOS 和绑定项目,如下所示。
- 将 MSAL_FRAMEWORK 和 MSAL 框架添加到本机引用
- 将 ApiDefinitions.cs 添加到 Binding 项目并从构建操作中选择 ObjcBindingApiDefinition。
- 将绑定项目引用添加到 Xamarin.iOS 项目。
- 在需要的地方导入Binding项目
- 调用 API
通过检查 MSAL_FRAMEWORK.framework 和 MSAL.framework 来启用Smart Link选项。请参阅下面的屏幕截图。
编译并运行应用程序。编译解决方案时没有问题,但是当我们运行应用程序时,它只是显示为等待调试器连接到...并在没有任何提示的情况下停止。
注意:我们可以通过从 Native References 中删除 MSAL.framework 并从 Swift 中删除框架应用程序中的依赖项的 MSAL 库来运行应用程序。
提前致谢。