Linker errors when trying to install new Google An

2019-01-16 12:43发布

问题:

I believe just today Google released a new update to their iOS Analytics frame work (version 3.0). When I follow the instructions and try to run the code, I get:

Undefined symbols for architecture armv7: "_inflate", referenced from: l002 in libGoogleAnalyticsServices.a(NSData+zlib.o) "_deflate", referenced from: l001 in libGoogleAnalyticsServices.a(NSData+zlib.o) "inflateInit2", referenced from: l002 in libGoogleAnalyticsServices.a(NSData+zlib.o) "_deflateEnd", referenced from: l001 in libGoogleAnalyticsServices.a(NSData+zlib.o) "_OBJC_CLASS_$_ASIdentifierManager", referenced from: objc-class-ref in libGoogleAnalyticsServices.a(TAGAdvertiserId.o) objc-class-ref in libGoogleAnalyticsServices.a(TAGAdvertisingTrackingEnabledMacro.o) objc-class-ref in libGoogleAnalyticsServices.a(TAGMobileAdwordsUniqueIdMacro.o)
"_inflateEnd", referenced from: l002 in libGoogleAnalyticsServices.a(NSData+zlib.o) "_SCNetworkReachabilityCreateWithName", referenced from: l027 in libGoogleAnalyticsServices.a(GAIReachabilityChecker.o) l002 in libGoogleAnalyticsServices.a(TAGNetReachability.o) "_SCNetworkReachabilitySetCallback", referenced from: l027 in libGoogleAnalyticsServices.a(GAIReachabilityChecker.o) l002 in libGoogleAnalyticsServices.a(TAGNetReachability.o) l003 in libGoogleAnalyticsServices.a(TAGNetReachability.o) "deflateInit2", referenced from: l001 in libGoogleAnalyticsServices.a(NSData+zlib.o) "_SCNetworkReachabilityScheduleWithRunLoop", referenced from: l027 in libGoogleAnalyticsServices.a(GAIReachabilityChecker.o) l002 in libGoogleAnalyticsServices.a(TAGNetReachability.o) "_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from: l027 in libGoogleAnalyticsServices.a(GAIReachabilityChecker.o) l003 in libGoogleAnalyticsServices.a(TAGNetReachability.o) ld: symbol(s) not found for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)

Possible they forgot to include a lib I need to add? (some other aspects of the instructions they forgot to change as well). Otherwise have followed their instructions to a tee and still not getting the needed results.

回答1:

I had to add both libz.dylib and AdSupport.framework to the build phases to make this go away. Google doesn't include these in their instructions so going to check with them to make sure this is OK then will update this post.

UPDATE: Now you also need to add libsqlite3.0.dylib to get it to work.



回答2:

I downloaded version 3.06 of the Google Analytics Services for iOS in early April 2014, and STILL ran into the problems referenced above. Google has updated their docs to mention the need to link the libz.dylib and the AdSupport.framework.

SOLUTION: I found through trial and error, I also needed to link the libsqlite3.dylib in order to build on the simulator or to a device.



回答3:

Add

libz.dylib

AdSupport.framework

libsqlite3.0.dylib

Google did not update their guide as of 8 Oct 2013.

Google Analytics Guide is here



回答4:

None of the above solutions worked for me. What did work for me, however, was adding these:

libz.dylib

libsqlite3.0.dylib

libGoogleAnalyticsServices.a

The libGoogleAnalyticsServices.a is a file that can be found in the download for Google Analytics for Mobile Apps iOS SDK v3.

Hope this helps!



回答5:

I had libz.dylib and AdSupport.framework as per instruction from Google, it worked fine.

Then I had to add -all_load in other linker flags for some other library dependency, then google analytics started failing build with linker error.

I had to add libsqlite3.0.dylib framework to get it to work.

So there is something to do with -all_load linker flag



回答6:

Till third party developers do not enable BITCODE for their old libraries, you can disable bit code in your own project if you are not going to have a Apple Watch extension for you application.