【问题标题】:ADAL iOS with CocoaPods v0.38 using Swift without Bridging HeaderADAL iOS 与 CocoaPods v0.38 使用 Swift 没有桥接头
【发布时间】:2015-08-09 13:40:35
【问题描述】:

我正在构建一个使用 ADAL 连接到 Office365 的 Swift 应用程序。几个月前,在 Podfile 中,我只有一行:

pod 'ADALiOS', '~> 1.0.1'

当我定义一个包含以下内容的桥接头时,一切正常:

#import "ADALiOS/ADAuthenticationContext.h"

最后,在我的 Swift 代码中,我只需要添加

import ADALiOS

但我也想开始使用 SwiftyJSON,它是一个 Swift 框架,所以我在我的 Podfile 中添加了几行代码:

pod 'ADALiOS', '~> 1.2.4'
pod 'SwiftyJSON'
use_frameworks!

更新到 CocoaPods V0.38 允许使用带有 Objective-C 库 (ADALiOS) 的框架。根据文档,不再需要 Bridging 标头,因此我将其删除。

现在,一切编译正常,但是当我调用 ADAL 代码时,它失败并出现以下错误:

ADALiOS [2015-08-09 13:01:07 - C621BB01-686A-4064-9455-A4B55C11E0E8] 
ERROR: Error raised: 18. Additional Information: 
Domain: ADAuthenticationErrorDomain 
ProtocolCode:(null)
Details:The required resource bundle could not be loaded. Please read the ADALiOS readme on how to build your application with ADAL provided authentication UI resources.. 
ErrorCode: 18.

我假设因为它可以很好地编译/链接,所以这与桥接头无关,而是与其他东西有关。

有什么线索吗?

【问题讨论】:

    标签: ios swift adal bridging-header


    【解决方案1】:

    我终于解决了这个问题。如果其他人遇到相同“类型”的错误,这就是我所做的。

    我从头开始了一个新项目,并使用 CocoaPod 安装了 ADALiOS,没有使用 use_framework!并手动将库 libADALiSO.a 添加到项目中,以及带有#import“ADAuthenticationContext.h”的桥接头。我什至使用了旧版本的 ADALiOS (V1.0.2)。在尝试运行这个项目(应该可以运行)时,我收到了奇怪的警告,指出我在 Xcode 使用的一些隐藏文件夹中存在重复的函数:

    ~/Library/developer/xcode/DerivedData
    ~/Library/developer/xcode/CoreSimulator/Device
    

    无论如何,它是有效的,因为它需要一个副本来运行程序。然后我只是删除了其中包含我的项目名称的文件夹/文件并重建了程序。警告消失了,它又开始工作了。

    然后,我在我的 Podfile 中包含了所需的 PromiseKit 和 use_frameworks,重新构建了应用程序并再次运行。我删除了不需要的桥接头,但只在我的 swift 代码中添加了以下行:

    import ADALiOS
    

    它仍然按照最初的预期工作。

    最后,我用我的所有代码打开了我的原始项目,它也构建并运行,没有任何错误。所以我浪费了 3 个小时从头开始重试一切,以为 Cocoapods V0.38 或 aven ADALiOS 是罪魁祸首,最终发现它可能只是 Xcode 中的东西。

    所以我不知道为什么这些文件会导致问题,我可以添加一个解释,那就太好了。

    【讨论】:

      【解决方案2】:

      根据 ADAL GitHub 存储库,这应该在 ADAL 2.1 中得到修复

      【讨论】:

        【解决方案3】:

        如果您在 Objective-C 项目中使用 pod。然后请使用 pod 版本 2.5.1,因为这是可用的最新版本。但不幸的是,这个版本在任何地方都没有提到,帖子和帮助博客仍然显示 2.2 版本,这会导致编译器错误。

        但是,如果您在初始阶段使用过 2.2 版本,请不要担心,只需“更新”您的项目,然后重新打开相应的工作区。这将使您的代码编译没有任何错误。

        【讨论】:

          【解决方案4】:

          尝试将 SwiftyJSON 框架拖到您的项目中。 不要使用 cocoaPods,而是下载 zip 文件,然后解压缩并将 swift 文件拖到您的项目中。 像这样不需要在你的 PodFile 中添加 use_frameworks 并且一切都应该正常工作。 (我已经在另一个库中做到了这一点,并且成功了)

          【讨论】:

          • 是的,这可能是一种解决方法,但我希望继续使用 Cocoapods 来管理依赖项。
          猜你喜欢
          • 2017-04-06
          • 2016-12-25
          • 1970-01-01
          • 2015-10-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多