【问题标题】:Single library for Android and iOS适用于 Android 和 iOS 的单一库
【发布时间】:2018-10-16 20:51:36
【问题描述】:

我是 Xamarin 的新手,并且分别为 iOS 和 Android 开发了 Xamarin Class Library。该库有一些业务逻辑,为 iOS 启动 ViewController 和为 Android 启动 Activity。为 iOS 和 Android 生成的二进制文件分别是 iOS.dll 和 Android.dll。然后在 Xamarin.iOS 和 Xamarin.Android 本机应用中使用这些库。

Android 和 iOS 的一些业务逻辑点是相同的。有没有办法开发一个包含整个业务逻辑的单一库,并对不同逻辑的两个平台进行条件检查。

我查看了可移植类库,但它要求包含 Xamarin.Forms 以供使用。我没有在应用程序的任何部分使用 Xamarin.Forms。使用库时出现以下错误

PCL 代码

if (Device.OS == TargetPlatform.iOS)
{
    Lib_iOS.Helper helper = new Lib_iOS.Helper();
    helper.launchScreen(parameters, callback);
}
else if (Device.OS == TargetPlatform.Android)
{
    Lib_Android.Helper helper = new Lib_Android.Helper();
    helper.launchScreen(parameters, callback);
}

错误

您必须调用 Xamarin.Forms.Init();在使用之前。

注意:作为业务需求的一部分,我只需要在 iOS 和 Android 应用程序中使用 .dll

【问题讨论】:

    标签: xamarin xamarin.ios xamarin.android portable-class-library


    【解决方案1】:

    代码共享选项请看官方文章:https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/code-sharing

    如果您想在特定于平台的条件下使用相同的代码,您可以创建一个共享项目。条件看起来像

    #if __ANDROID__
    ...
    #else
    ...
    #endif
    

    【讨论】:

    • 使用这种方法的缺点是项目需要成为应用程序的一部分。但就我而言,我想共享唯一的 .dll(程序集)。这是我在文档中读到的 ----->“与大多数其他项目类型不同,共享项目没有'输出'程序集。在编译期间,文件被视为引用项目的一部分并编译到该程序集中。如果您希望将代码作为程序集共享,那么可移植类库或 .NET Standard 是更好的解决方案。”
    猜你喜欢
    • 1970-01-01
    • 2014-09-17
    • 2011-09-14
    • 1970-01-01
    • 2023-04-03
    • 2020-04-27
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    相关资源
    最近更新 更多