【问题标题】:Is it possible to load a library before linking based on iOS version?是否可以在基于 iOS 版本的链接之前加载库?
【发布时间】:2013-05-16 06:32:25
【问题描述】:

我有一个应用程序,它应该使用谷歌地图和 mapkit 框架。现在,谷歌地图仅在 iOS 5.1 及更高版本上受支持,而 Mapkit 框架在较低版本上受支持。 我想申请到:

  1. 在较低版本的设备上加载 Mapkit。
  2. 加载5.1及以上版本的谷歌地图, 在链接之前。

    底线是,在链接之前,是否可以在应用程序启动时根据设备的 iOS 版本加载特定的库?或者,我可以根据 iOS 版本以编程方式在两者之间进行选择吗? 感谢您的帮助。

【问题讨论】:

    标签: ios ios6 mapkit dynamic-linking google-maps-sdk-ios


    【解决方案1】:

    请注意,仅在您的应用中包含适用于 iOS 的 Google Maps SDK 会使其在 iOS 4.x 上崩溃 - 即使您未在 SDK 中调用任何内容。详情请看这里:

    Google Maps SDK for iOS trying to run on iOS 4.3

    因此,如果您采用这种方法,您将能够在 iOS 5.1+ 上使用 Google 地图,但只能在 iOS 5.0 上使用 Apple 地图。鉴于可能只有不到 1% 的用户正在运行 iOS 5.0 (see here),因此可能不值得这么麻烦。

    【讨论】:

      【解决方案2】:

      可以在两者之间进行选择,但您所描述的内容是不可能的。 Apple 不允许第三方动态链接框架。 Google Maps 框架实际上是您应用程序中的一个静态库,因此它存在于您的二进制文件中(不涉及链接)。

      【讨论】:

      • 谢谢,我可以根据 iOS 版本以编程方式在两者之间进行选择吗?
      • 是的,这个逻辑已经在 Stack Overflow 上回答过很多次了。
      • 能否请您提及链接,它会有所帮助,我是 Xcode 的新手。谢谢
      • 搜索堆栈溢出是一项你必须学习的有用技能:stackoverflow.com/search?q=%5Bios%5D+detect+ios+version
      • 非常感谢,我正在并行搜索! :)
      【解决方案3】:

      我应该指出,SDK 显然不兼容 API,因此您在每种情况下都需要不同的代码,并且不能仅仅根据 iOS 版本更改地图视图的类。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-23
        • 2023-03-17
        • 2016-04-14
        • 1970-01-01
        相关资源
        最近更新 更多