mapbox / mapbox-gl-native

Interactive, thoroughly customizable maps in native Android, iOS, macOS, Node.js, and Qt applications, powered by vector tiles and OpenGL
https://mapbox.com/mobile
Other
4.37k stars 1.33k forks source link

Not possible to connect a static framework >= 3.3 alpha-1 #5071

Closed Gerz-inc closed 8 years ago

Gerz-inc commented 8 years ago

Platform: iOS Mapbox SDK version: >= 3.3 alpha-1

Starting with version 3.3 alpha-1 is not possible to connect a static framework. Perhaps additional settings are needed? Version 3.2 connects without problems.

Steps to trigger behavior

  1. run make ipackage-strip
  2. get the static framework
  3. link with an app

    Log

Ld /Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/Taxovichkof.app/Taxovichkof normal armv7
    cd "/Users/MacBook/Google Диск/iOS/TaxiApp"
    export IPHONEOS_DEPLOYMENT_TARGET=7.0
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/AFNetworking -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/Bolts -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/Facebook-iOS-SDK -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/Google-API-Client -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/OpenInChrome -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/PKMultipartInputStream -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/SAMTextView -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/SDWebImage -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/SSKeychain -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/ShareKit -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/UIActivityIndicator-for-SDWebImage -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/gtm-http-fetcher -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/gtm-logger -L/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/gtm-oauth2 -L/Users/MacBook/Google\ Диск/iOS/TaxiApp/Pods/GoogleAnalytics/Libraries -L/Users/MacBook/Google\ Диск/iOS/TaxiApp/Pods/GoogleConversionTracking/Libraries -L/Users/MacBook/Google\ Диск/iOS/TaxiApp/Pods/GoogleIDFASupport/Libraries -L/Users/MacBook/Google\ Диск/iOS/TaxiApp/Libraries/metrica-sdk-ios-master -L/Users/MacBook/Google\ Диск/iOS/TaxiApp/Libraries/ShareKit-master/Submodules/buffer-ios-sdk/BufferSDK -F/Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos -F/Users/MacBook/Google\ Диск/iOS/TaxiApp/Pods/GoogleMaps/Frameworks -F/Users/MacBook/Google\ Диск/iOS/TaxiApp/Pods/ShareKit/Frameworks -F/Users/MacBook/Google\ Диск/iOS/TaxiApp/Pods/YandexMobileMetrica -F/Users/MacBook/Google\ Диск/iOS/TaxiApp -F/Users/MacBook/Google\ Диск/iOS/TaxiApp/Libraries -F/Users/MacBook/Google\ Диск/iOS/TaxiApp/Libraries/mapbox-ios-sdk-3/static -F/Users/MacBook/Google\ Диск/iOS/TaxiApp/Libraries/ShareKit-master/Frameworks -F/Users/MacBook/Google\ Диск/iOS/TaxiApp/Libraries/ShareKit-master/Frameworks/Pinterest.embeddedframework -F/Users/MacBook/Google\ Диск/iOS/TaxiApp/Libraries/QuincyKit-develop/client/iOS -F/Users/MacBook/Google\ Диск/iOS/TaxiApp/Libraries/FacebookSDKs-iOS-20150910 -filelist /Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Intermediates/Taxi.build/Debug-iphoneos/Taxovichkof.build/Objects-normal/armv7/Taxovichkof.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -miphoneos-version-min=7.0 -dead_strip -Xlinker -no_deduplicate -lxml2 -ObjC -lAFNetworking -lAdIdAccessLibrary -lBolts -lFacebook-iOS-SDK -lGoogle-API-Client -lGoogleAnalytics -lGoogleConversionTracking -lOpenInChrome -lPKMultipartInputStream -lSAMTextView -lSDWebImage -lSSKeychain -lShareKit -lUIActivityIndicator-for-SDWebImage -lc++ -lgtm-http-fetcher -lgtm-logger -lgtm-oauth2 -licucore -lsqlite3 -lz -framework AVFoundation -framework Accelerate -framework AdSupport -framework AddressBook -framework AssetsLibrary -framework CoreBluetooth -framework CoreData -framework CoreGraphics -framework CoreLocation -framework CoreMedia -framework CoreMotion -framework CoreTelephony -framework CoreText -framework Foundation -framework GLKit -framework GoogleMaps -framework GooglePlus -framework ImageIO -framework MediaPlayer -framework MessageUI -framework MobileCoreServices -framework OpenGLES -framework QuartzCore -framework Security -framework Social -framework SystemConfiguration -framework Twitter -framework UIKit -framework YandexMobileMetrica -weak_framework Accounts -weak_framework AudioToolbox -weak_framework CoreGraphics -weak_framework CoreLocation -weak_framework Foundation -weak_framework QuartzCore -weak_framework SafariServices -weak_framework Security -weak_framework Social -weak_framework UIKit -fobjc-arc -fobjc-link-runtime -lz -lsqlite3 -lc++ -framework QuartzCore -framework ImageIO -framework GLKit -framework AdSupport -framework AudioToolbox -framework CrashReporter -framework MobileCoreServices -framework Security -framework Mapbox -framework SystemConfiguration -framework CoreMotion -framework UIKit -framework MessageUI -framework SafariServices -framework CoreMedia -framework CoreFoundation -framework Foundation -framework AVFoundation -framework AssetsLibrary -framework Accounts -framework MediaPlayer -framework Social -framework CoreData -framework OpenGLES -framework CoreText -framework MapKit -framework LiveSDK -lPods-Taxovichkof -Xlinker -dependency_info -Xlinker /Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Intermediates/Taxi.build/Debug-iphoneos/Taxovichkof.build/Objects-normal/armv7/Taxovichkof_dependency_info.dat -o /Users/MacBook/Library/Developer/Xcode/DerivedData/Taxi-erbmhgfrlvababhfavyiqjkewgeq/Build/Products/Debug-iphoneos/Taxovichkof.app/Taxovichkof

Undefined symbols for architecture armv7:
  "_OBJC_METACLASS_$_MGLPointAnnotation", referenced from:
      _OBJC_METACLASS_$_TAXMapLocation in TAXMapLocation.o
  "_OBJC_CLASS_$_MGLPointAnnotation", referenced from:
      _OBJC_CLASS_$_TAXMapLocation in TAXMapLocation.o
  "_OBJC_CLASS_$_MGLAnnotationImage", referenced from:
      objc-class-ref in TAXOrderViewController.o
      objc-class-ref in TAXCarsAnimation.o
      objc-class-ref in TAXRadarViewController.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
1ec5 commented 8 years ago

Thanks for this report. Does the issue reproduce if you add -ObjC to the LD_OTHERFLAGS (Other Linker Flags) build setting? Looks like that part of #4641 needs work…

Gerz-inc commented 8 years ago

Yes, -ObjC is already used, but no effect

1ec5 commented 8 years ago

Looks like we’ll have to revert 7a38e568191a68e3311d36296e14c105b12c051c.

1ec5 commented 8 years ago

The issue is that #4641 moved the Objective-C class implementations from libplatform-ios.a to libMapbox.a (“static” target) and Mapbox.framework (“dynamic” target), but libMapbox.a was not added to the libtool step in package.sh, whereas the dynamic Mapbox.framework became the final dynamic product. So these classes aren’t linking because they aren’t included in the final static framework’s executable. Thanks to @friedbunny for pointing out this omission.