【问题标题】:MvvmCross - trying to use Fragments AND latest support lib results in linking problemsMvvmCross - 尝试使用 Fragments 和最新的支持库导致链接问题
【发布时间】:2013-10-01 21:03:17
【问题描述】:

我想使用 SlidingPaneLayout 或 DrawerLayout,但它们需要更新的支持库。 Xamarin 在组件商店中有一个(Android 支持库 v4(修订版 18)。

但如果我尝试使用它并使用 Mvvm Fragments 支持(需要引用 Mono.Android.Support.v4),我会收到如下链接器错误:

error : Duplicate managed type found! Mappings between managed types and Java types must be unique. First Type: 'Android.Support.V4.App.FragmentManager/IOnBackStackChangedListenerImplementor, Xamarin.Android.Support.v4-r18, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'; Second Type: 'Android.Support.V4.App.FragmentManager/IOnBackStackChangedListenerImplementor, Mono.Android.Support.v4, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065'

删除旧的支持库引用会导致不同的链接器错误;

错误 CS0012:类型 Android.Support.V4.App.FragmentActivity' is defined in an assembly that is not referenced. Consider adding a reference to assemblyMono.Android.Support.v4,Version=0.0.0.0,Culture=neutral,PublicKeyToken=84e04ff9cfb79065'

【问题讨论】:

    标签: android xamarin.android xamarin mvvmcross


    【解决方案1】:

    我认为这是由 Xamarin 将程序集从“Mono”重新命名为“Xamarin”引起的普遍问题。

    MvvmCross 等第三方程序集和 Google Play 服务组件等其他程序集目前链接到 Xamarin.Android(以前称为 Mono for Android)的“Mono”命名程序集。

    目前,如果不通过 Google Play 组件移除对 Maps v2 的支持,MvvmCross 无法更改它与“Xamarin”命名程序集的链接 - 我们目前有更多用户要求支持地图,然后要求支持最新的支持库。


    如果有人需要链接以“Xamarin”命名的程序集,那么您需要某种方法来重定向程序集以使用更改后的名称。我知道这样做的方法是:

    • 在完整的 .Net 中,我相信您可以在 app.config 文件中使用“绑定重定向”来执行此操作,但我认为这些在 Xamarin.Android 中不可用。
    • 您也许可以使用仅包含 [TypeForwardedTo] 类型声明的虚拟 'Mono.Android.Support.v4' 程序集来执行重定向 - 生成这会有点乏味,但应该可以工作。我试图生成一个 TypeForwardTo 程序集 - https://gist.github.com/slodge/6790040 - 但我认为 Xamarin 使用了程序集强命名这一事实意味着我无法让它工作:/ Xamarin 可能能够做到吗?
    • 您可以分叉并重建现有的 MvvmCross 'Fragging' 程序集 - 它并不大 - 以便它引用以 'Xamarin' 命名的组件。您还需要为您需要的任何其他程序集执行此操作 - 例如用于地图的 Google Play 之一。

    【讨论】:

    • 听起来整理这个是 Xamarin 的工作。我会在 Xamarin 论坛上转发。
    • @jokeane 您是否有幸与 Xamarin 支持团队一起解决了这个问题?
    • 已将此记录为 xamarin 的错误 - forums.xamarin.com/discussion/8563/…
    • 我认为我发布了错误的链接...bugzilla.xamarin.com/show_bug.cgi?id=15205 是我实际使用 xam 记录的内容
    • 有没有办法使用以前的支持库?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多