Google SWIFT 类 中具有测试目标成员资格的分析对象给出编译错误

Google analytics objects in SWIFT classes that have test target membership gives compile error

我已经在使用 SWIFT 的其他一些应用程序中成功使用 Google Analytics for iOS 一段时间了。但是,我 运行 遇到了一个我似乎无法解决的特定场景。

我有一个 AnalyticsHelper class,它有一个简单的方法,可以通过我的默认跟踪器向 Google 发送事件。当我尝试在我的项目中的任何其他 class 中创建此 AnalyticsHelper class 的实例时,它在我的测试目标中具有目标成员资格,它无法识别 AnalyticsHelper 对象并给出编译错误。但是,在我的测试目标中没有目标成员资格的任何其他 class 中创建此 AnalyticsHelper class 的实例工作得很好。

如果我尝试将我的 AnalyticsHelper class 添加到我的测试目标,我的 AnalyticsHelper class 会出现编译错误,因为它无法识别任何 Google Analytics对象(使用未解析的标识符 'xxx')。看起来可能是某种类型的链接器错误,但我似乎无法弄清楚。

知道如何解决这个问题吗?我正在使用 Xcode 6.1.1 (6A2008a),Google Analytics 3.09。

AnalyticsHelper class:

import Foundation

public class AnalyticsHelper {

func logBarcodeScan() {
    let tracker = GAI.sharedInstance().defaultTracker
    tracker.set(kGAIScreenName, value: "Scanning")
    tracker.send(GAIDictionaryBuilder.createEventWithCategory("UX", action: "scanBarcode",
        label: "bagTag", value: nil).build() as NSDictionary)
    tracker.set(kGAIScreenName, value: nil)
    }
}

Class 在我的测试目标中没有目标成员资格,创建 AnalyticsHelper 实例没有任何问题:

import UIKit

class StartViewController: UIViewController {

let analyticsHelper = AnalyticsHelper()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    }
}

Class 在我的测试目标中确实具有目标成员身份,在编译时给出未解析的标识符 'AnalyticsHelper' 错误:

import UIKit
import AVFoundation

class ScanViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate {
let analyticsHelper = AnalyticsHelper()
}

我终于找到了答案。

1) 在测试目标构建设置中,将 Objective-C 桥接头文件设置设置为应用目标用于此设置的同一文件。

2) 在 Test Target Build Phases 中,将 libGoogleAnalyticsServices.a 添加到 Link Binary With Libraries 部分,以及 Google Analytics 需要的其他 3 个框架(CoreData,系统配置,libz.dylib).

完成这些步骤后,一切正常。