【问题标题】:How do I structure my Xamarin app to ensure crossplatform functionality?如何构建我的 Xamarin 应用程序以确保跨平台功能?
【发布时间】:2016-07-12 16:40:40
【问题描述】:

嘿,我是一名 Xamarin 初学者,对如何构建我的应用程序以确保跨平台功能同时编写最少的必要代码感到有点困惑。我有一个用 C 编写的库,以前使用这个库时我会走 NDK 路线(适用于 android),现在我必须将该库用于我的 Xamarin.Android 和 Xamarin.ios 应用程序。我想知道实现这个目标的最佳方式是什么。我要创建共享库还是 PCL?我是否找到一种方法将库编译为 dll 并仅包含在 Xamarin 项目中?

【问题讨论】:

  • 您将无法在 Android 和 iOS 上使用 C 库。您可能可以使用 NDK 进行编译,然后使用 API 绑定项目将其链接到您的 Android 应用程序。基本上,唯一可以跨平台重用和共享的代码就是您放入 PCL 中的代码。这通常是您的 Xamarin Forms 视图、模型和 ViewModel。 MVVM。 Google Xamarin 表单 MVVM 示例。

标签: xamarin


【解决方案1】:

链接到 C“本机”库并没有真正改变,因为您使用的是 Xamarin,您仍然需要构建所有各种 ARCH 类型、创建通用/胖库等...

在 iOS 上,您将链接到静态库或加载 .dylib

iOS Linking/Interop Native Libraries

在 Android 上,您将像使用 NDK 一样使用您的 .soXamarin.Android 生成基于 NDK 的应用程序):

Using Native Libraries on Android

*注意:如果您使用的是 Visual Studio,您还可以在 Xamarin.Android C# 项目旁边调试您的“本机”C/C++。

在您的 C# 代码中,为了访问其中任何一个中定义的方法,您可以使用 Mono 的 P/Invoke 功能,该功能与您在 .NET 中用于访问基于 C 的库中的函数的技术相同。

Accessing C Methods from C#

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多