2013-09-21 70 views
46

Tôi đã xây dựng ứng dụng của mình (được nhắm mục tiêu cho iOS7) và bây giờ muốn áp dụng Google Analytics làm bước cuối cùng trước khi gửi. Những gì tôi đã làm:Không thể liên kết GoogleAnalytics 3.01 với XCode 5 (thiếu kiến ​​trúc bắt buộc x86_64)

  1. Downloaded GA dành cho iOS 3,01
  2. nhập nội dung của /GoogleAnalytics/Library/ vào nhóm "Google Analytics"
  3. nhập khẩu libGoogleAnalyticsServices.a vào nhóm "Google Analytics"
  4. Added xây dựng giai đoạn và hoán đổi xây dựng giai đoạn libGoogleAnalytics_debug.a với libGoogleAnalyticsServices.a
  5. Đã thêm khối mã #include "GAI.h" vào sốcủa tôi-file.
  6. Khởi tạo [GAI sharedInstance] trong AppDelegate của tôi.

Tôi có ảnh chụp màn hình kèm theo của thiết lập ở cuối bài đăng này. Khi tôi cố gắng xây dựng (hoặc thiết bị hoặc mô phỏng, cả 32bit), tôi nhận được các lỗi mối liên kết sau đây:

Undefined symbols for architecture x86_64: 
    "_OBJC_CLASS_$_GAI", referenced from: 
     objc-class-ref in FTVAppDelegate.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Làm thế nào để giải quyết này?

UPDATE 1

Tôi cũng nhận được cảnh báo

ld: warning: ignoring file .../libGoogleAnalyticsServices.a, missing required architecture x86_64 in file .../libGoogleAnalyticsServices.a (3 slices) 
ld: warning: ignoring file .../SDWebImage.framework/SDWebImage, missing required architecture x86_64 in file .../SDWebImage.framework/SDWebImage (3 slices) 

UPDATE 2

Lỗi này chỉ xảy ra khi xây dựng cho 64bit. Tôi đã vô tình thiết lập "Chỉ xây dựng cho kiến ​​trúc hoạt động" thành NO, khi điều này thay đổi thành CÓ, tôi đã có thể xây dựng một lần nữa. Điều này có nghĩa rằng các ứng dụng bây giờ không hoạt động trên iPhone 5S - mà vẫn còn là một vấn đề.

Trả lời

70

Bạn không làm gì sai. Tôi khá chắc chắn google chưa cung cấp một phiên bản arm64 của libAnalyticsServices.a của họ, mà thực sự gây phiền nhiễu ... nó đã được vài tuần kể từ khi công chúng phát hành Xcode 5GM.

Hiện tại, tôi đoán chỉ xây dựng cho armv7, armv7 hoặc xóa phân tích google cho đến khi họ rời khỏi quần của họ.

UDATE: Cuối cùng cố định https://developers.google.com/analytics/devguides/collection/ios/resources

+0

Vì vậy, nếu tôi xây dựng cho armv7, armv7s hơn ứng dụng sẽ không chạy trên Phone 5S. Hoặc tôi có thể xây dựng nó cho điện thoại 5S, nhưng tôi sẽ không có quảng cáo. – WebOrCode

+1

Nó sẽ chạy trên iPhone 5S tốt, bạn sẽ không sử dụng kiến ​​trúc 64 bit arm64 có sẵn trên điện thoại. –

+0

Tôi tìm thấy cùng một vấn đề trong khuôn khổ SDImageManager. – Karthik

0

Tôi thấy trên ảnh chụp màn hình đầu tiên mà dự án của bạn có 2 mục tiêu. Bạn có chắc chắn rằng libGoogleAnalyticsServices.a được thêm vào cả hai mục tiêu không? Các khung công tác được liên kết có thể khác với mục tiêu, vì vậy đây là lỗi phổ biến nhất theo cách này ... Đồng thời thử xóa GA khỏi dự án, sau đó xóa, sau đó xóa Thư mục xây dựng, sau đó khởi động lại Xcode và thêm GA lần nữa =) Hôm qua điều này đã giúp tôi =)

+0

Cảm ơn đề xuất, Petro. Tuy nhiên, tôi chỉ thử nó và nó không giúp đỡ. Và tôi chắc chắn 100% rằng các tệp được thêm vào đúng mục tiêu. –

+7

Chỉ cần một lưu ý cho update2 của bạn, x86_64 không thực sự là kiến ​​trúc iPhone 5s. Đó là arm64. Trong các kiến ​​trúc mục tiêu của bạn, bạn có thể chọn "Kiến trúc tiêu chuẩn (bao gồm 64-bit)" để tạo hai tập tin nhị phân - cho 32 và cho 64bit iOS. Tuy nhiên, nếu bạn xây dựng bằng "Architecures chuẩn" (armv7, armv7s), ứng dụng của bạn sẽ vẫn hoạt động trên iPhone 5s - chỉ cần không tăng hiệu suất xử lý 64bit. Ngoài ra, tôi nghĩ rằng GA tĩnh lib chưa được xây dựng cho cả 32 và 64bit iOS và bạn sẽ nhận được lỗi như "biểu tượng không xác định cho vòm arm64". –

+0

Điều đó đã làm cho tôi. Cảm ơn! –

13

Chọn tùy chọn này trong phần kiến ​​trúc trong "Xây dựng Settings" và mã của bạn sẽ chạy trên iPhone 5S, tôi đã có những rắc rối tương tự.

Build Settings

8

Tốt tin tức tất cả mọi người, cố định bằng việc phát hành 3,03:

64-bit hỗ trợ là bây giờ đã có trong v3.03 của Google Analytics Dịch vụ SDK dành cho iOS. (Source)