2014-09-16 19 views
8

Tôi đã tích hợp Google Analytics library vào dự án của mình.Google Analytics trong iOS 8 bằng Swift không hoạt động

Sau đó, tôi đã cấu hình bridging header file và tôi đã thêm các tiêu đề sau Google Analytics

#import "Libraries/GoogleAnalytics/GAI.h" 
#import "Libraries/GoogleAnalytics/GAIFields.h" 
#import "Libraries/GoogleAnalytics/GAILogger.h" 
#import "Libraries/GoogleAnalytics/GAITracker.h" 
#import "Libraries/GoogleAnalytics/GAIDictionaryBuilder.h" 

Việc khởi của thư viện trong AppDelegate.swift biên dịch và chạy một cách chính xác. tôi thêm đoạn mã sau để theo dõi một sự kiện

var tracker = GAI.sharedInstance().defaultTracker 
tracker.send(GAIDictionaryBuilder.createEventWithCategory(category, action: action, label: label, value: value).build()) 

Khi cố gắng để tạo ra xây dựng, các lỗi sau xảy ra

Undefined symbols for architecture x86_64: 
    "_NSOverwriteMergePolicy", referenced from: 
    -[GAIDataStore contextWithModel:URL:] in libGoogleAnalyticsServices.a(GAIDataStore.o) 
    "_NSSQLiteErrorDomain", referenced from: 
    -[GAIDataStore performBlockAndWait:withError:] in libGoogleAnalyticsServices.a(GAIDataStore.o) 
    "_NSSQLiteStoreType", referenced from: 
    -[GAIDataStore coordinatorWithModel:URL:] in libGoogleAnalyticsServices.a(GAIDataStore.o) 
    "_OBJC_CLASS_$_NSAttributeDescription", referenced from: 
    objc-class-ref in libGoogleAnalyticsServices.a(GAICoreDataUtil.o) 
    "_OBJC_CLASS_$_NSEntityDescription", referenced from: 
    objc-class-ref in libGoogleAnalyticsServices.a(GAIDataStore.o) 
    objc-class-ref in libGoogleAnalyticsServices.a(GAICoreDataUtil.o) 
    "_OBJC_CLASS_$_NSFetchRequest", referenced from: 
    objc-class-ref in libGoogleAnalyticsServices.a(GAIDataStore.o) 
    "_OBJC_CLASS_$_NSManagedObjectContext", referenced from: 
    objc-class-ref in libGoogleAnalyticsServices.a(GAIDataStore.o) 
    "_OBJC_CLASS_$_NSManagedObjectModel", referenced from: 
    objc-class-ref in libGoogleAnalyticsServices.a(GAICoreDataUtil.o) 
    "_OBJC_CLASS_$_NSPersistentStoreCoordinator", referenced from: 
    objc-class-ref in libGoogleAnalyticsServices.a(GAIDataStore.o) 
    "_SCNetworkReachabilityCreateWithName", referenced from: 
    _kDefaultReachabilityApi in libGoogleAnalyticsServices.a(GAIReachabilityChecker.o) 
    "_SCNetworkReachabilityScheduleWithRunLoop", referenced from: 
    _kDefaultReachabilityApi in libGoogleAnalyticsServices.a(GAIReachabilityChecker.o) 
    "_SCNetworkReachabilitySetCallback", referenced from: 
    _kDefaultReachabilityApi in libGoogleAnalyticsServices.a(GAIReachabilityChecker.o) 
    "_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from: 
    _kDefaultReachabilityApi in libGoogleAnalyticsServices.a(GAIReachabilityChecker.o) 
    "_deflate", referenced from: 
    +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) 
    "_deflateEnd", referenced from: 
    +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) 
    "_deflateInit2_", referenced from: 
    +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) 
    "_inflate", referenced from: 
    +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) 
    "_inflateEnd", referenced from: 
    +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) 
    "_inflateInit2_", referenced from: 
    +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Tôi đang sử dụng Xcode 6 GM và cố gắng để biên dịch ứng dụng đang chạy trong bộ giả lập iPhone 5s.

EDIT1:

Libraries cần đã được thêm vào

  • CoreData.framework
  • SystemConfiguration.framework
  • libz.dylib

tôi đã giải quyết được một phần các lỗi thêm vào phần đầu bắc cầu r nộp hàng nhập khẩu sau

#import <CoreData/CoreData.h> 
#import <SystemConfiguration/SystemConfiguration.h> 

Các thông báo lỗi được giảm xuống

Undefined symbols for architecture x86_64: 
    "_deflate", referenced from: 
    +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) 
    "_deflateEnd", referenced from: 
    +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) 
    "_deflateInit2_", referenced from: 
    +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) 
    "_inflate", referenced from: 
    +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) 
    "_inflateEnd", referenced from: 
    +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) 
    "_inflateInit2_", referenced from: 
    +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

EDIT2:

Cuối cùng tôi giải quyết được vấn đề.

Trong Cài đặt Target -> Build Settings -> Liên kết -> Flags Linker khác thêm cờ sau: -lz

+1

Tôi chỉ cần thêm Google Analytics cho điện thoại di động để ứng dụng Swift của tôi và không phải trải qua khá nhiều hoops bạn. Tôi chỉ phải thêm GAI.h và vào tiêu đề bắc cầu và nó hoạt động tốt. Không phải fiddle với các thiết lập xây dựng. Họ có thể đã thêm hỗ trợ tốt hơn từ bài đăng của bạn. –

Trả lời

1

Bạn cần phải thêm tất cả các thư viện Objective-C GA cần một cách rõ ràng.

Trong đầu ra lỗi, bạn có thể thấy rằng nó đang tìm kiếm Dữ liệu cốt lõi nhưng thay vào đó tìm thấy "biểu tượng không xác định". Điều đó cho bạn thấy rằng nó thiếu thư viện. Lưu ý rằng các thư viện Objective-C khác với các mô-đun bạn nhập vào trong Swift.

Để giải quyết vấn đề này, hãy chuyển đến xây dựng các giai đoạn mục tiêu của bạn và liên kết đến các thư viện cần thiết, bắt đầu bằng CoreData.framework. Tham khảo tài liệu GA mà bạn cần thư viện khác.

EDIT:

Tôi đã tạo một ứng dụng nhanh, thêm GA và làm cho nó hoạt động bằng cách thêm các thư viện. Có lẽ bạn có thể thử xóa thư viện libs.dylib và thêm lại nó. Tôi cũng khuyên bạn chỉ nên bao gồm tiêu đề theo tên

#include "GAI.h" 
+0

Yêu cầu thư viện đã được thêm vào. Sau khi đọc câu trả lời của bạn, tôi đã thực hiện một số thay đổi và cập nhật câu hỏi. –

+0

Xem chỉnh sửa của tôi. Nó sẽ làm việc với thiết lập này. – Mundi

+0

Cuối cùng tôi đã giải quyết được vấn đề. Xem edit2 của tôi. –

2

@Ezequiel Perez: Bạn phải bao gồm mục tiêu thư viện được liên kết.

CoreData.framework 
SystemConfiguration.framework 
libz.dylib 

Cố gắng bao gồm này ....

+1

Yêu cầu thư viện đã được thêm vào. –

Các vấn đề liên quan