About static framework used - ShenYj/ShenYj.github.io GitHub Wiki
ๅๅคไธไธช็ฉบ้กน็ฎใไธคไธชframework
้ๆๅบๅ .xcconfig
ๆไปถ
-
็ฎๅฝ็ปๆ
. โโโ AFNetworking โ โโโ AFAutoPurgingImageCache.h โ โโโ AFCompatibilityMacros.h โ โโโ AFHTTPSessionManager.h โ โโโ AFImageDownloader.h โ โโโ AFNetworkActivityIndicatorManager.h โ โโโ AFNetworkReachabilityManager.h โ โโโ AFNetworking-umbrella.h โ โโโ AFNetworking.h โ โโโ AFSecurityPolicy.h โ โโโ AFURLRequestSerialization.h โ โโโ AFURLResponseSerialization.h โ โโโ AFURLSessionManager.h โ โโโ UIActivityIndicatorView+AFNetworking.h โ โโโ UIButton+AFNetworking.h โ โโโ UIImageView+AFNetworking.h โ โโโ UIKit+AFNetworking.h โ โโโ UIProgressView+AFNetworking.h โ โโโ UIRefreshControl+AFNetworking.h โ โโโ WKWebView+AFNetworking.h โ โโโ libAFNetworking.a โโโ AFNetworking2 โ โโโ AFAutoPurgingImageCache.h โ โโโ AFCompatibilityMacros.h โ โโโ AFHTTPSessionManager.h โ โโโ AFImageDownloader.h โ โโโ AFNetworkActivityIndicatorManager.h โ โโโ AFNetworkReachabilityManager.h โ โโโ AFNetworking-umbrella.h โ โโโ AFNetworking.h โ โโโ AFSecurityPolicy.h โ โโโ AFURLRequestSerialization.h โ โโโ AFURLResponseSerialization.h โ โโโ AFURLSessionManager.h โ โโโ UIActivityIndicatorView+AFNetworking.h โ โโโ UIButton+AFNetworking.h โ โโโ UIImageView+AFNetworking.h โ โโโ UIKit+AFNetworking.h โ โโโ UIProgressView+AFNetworking.h โ โโโ UIRefreshControl+AFNetworking.h โ โโโ WKWebView+AFNetworking.h โ โโโ libAFNetworking2.a โโโ StaticFrameworkUsed โ โโโ AppDelegate.swift โ โโโ Assets.xcassets โ โโโ Base.lproj โ โ โโโ LaunchScreen.storyboard โ โ โโโ Main.storyboard โ โโโ Config.xcconfig โ โโโ Info.plist โ โโโ SceneDelegate.swift โ โโโ ViewController.swift โโโ StaticFrameworkUsed.xcodeproj
่ฟ้้ขไธคๅฅ
AFN
็ไปฃ็ ๅฎๅ จ็ธๅ๏ผๅชๆฏๆ็ป้พๆฅ็ๆ็้ๆๅบๅ็งฐไธๅ
้กน็ฎไธญๆฒกๆimport
ๅไฝฟ็จAFN
-
.xcconfig
้ ็ฝฎ// 1. -I: ๅคดๆไปถ HEADER_SEARCH_PATHS = $(inherited) "${SRCROOT}/AFNetworking" "${SRCROOT}/AFNetworking2" // 2. -L: library ๆๅจ็ฎๅฝ LIBRARY_SEARCH_PATHS = $(inherited) "${SRCROOT}/AFNetworking" "${SRCROOT}/AFNetworking2" // 3. -l ๅ็งฐ OTHER_LDFLAGS = $(inherited) -l "AFNetworking" -l "AFNetworking2"
ๆญคๆถ็ผ่ฏใ่ฟ่ก้ฝๆญฃๅธธ
็ฑไบ้พๆฅไธไธช้ๆๅบๆถ้ป่ฎค้็จ็ๆฏ
noall_load
๏ผๆไปฅ้พๆฅ็ๆถๅๅทฒ็ปๆพๅฐไบAFNetworking
๏ผๅ้ขๅๅปๆพAFNetworking2
็ๆถๅๅฐฑไผ่ขซๅฅ็ฆป
-
ๅฐๅ ถๆนๆ
all_load
ๆ-ObjC
OTHER_LDFLAGS = $(inherited) -all_load -l "AFNetworking" -l "AFNetworking2"
-
ๅๆฌก็ผ่ฏ๏ผๆ็คบ็ฌฆๅทๅฒ็ช
...็็ฅ duplicate symbol '_OBJC_IVAR_$_AFRefreshControlNotificationObserver._refreshControl' in: /Users/shenyj/Desktop/StaticFrameworkUsed/AFNetworking/libAFNetworking.a(UIRefreshControl+AFNetworking.o) /Users/shenyj/Desktop/StaticFrameworkUsed/AFNetworking2/libAFNetworking2.a(UIRefreshControl+AFNetworking.o) ld: 223 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
ไฝฟ็จforce_loadไธload_hidden่งฃๅณ็ฌฆๅทๅฒ็ช
-
load_hidden
็ไป็ป-load_hidden path_to_archive Uses specified static library as usual, but treats all global symbols from the static library to as if they are visibility hidden. Useful when building a dynamic library that uses a static library but does not want to export anything from that static library.
man ld
-> ๆ็ดขๅ ณ้ฎๅญๅณๅฏๅฐ้่ๆๆ็ๅ จๅฑ็ฌฆๅท๏ผ็ธๅฝไบ่ฎพ็ฝฎไธบๆฌๅฐ็ฌฆๅท๏ผ่ฟๆ ทๅฐๅ ถ้่๏ผไนๅฐฑไธไผไบง็็ฌฆๅทๅฒ็ชไบ
-
ไฝฟ็จ
force_load
ไธload_hidden
, ไฟฎๆน.xcconfig
ๅฆไธ// 1. -I: ๅคดๆไปถ HEADER_SEARCH_PATHS = $(inherited) "${SRCROOT}/AFNetworking" "${SRCROOT}/AFNetworking2" // 2. -L: library ๆๅจ็ฎๅฝ LIBRARY_SEARCH_PATHS = $(inherited) "${SRCROOT}/AFNetworking" "${SRCROOT}/AFNetworking2" // 3. -l ๅ็งฐ //OTHER_LDFLAGS = $(inherited) -all_load -l "AFNetworking" -l "AFNetworking2" OTHER_LDFLAGS = $(inherited) -l "AFNetworking" -l "AFNetworking2" -Xlinker -force_load -Xlinker "${SRCROOT}/AFNetworking/libAFNetworking.a" -Xlinker -load_hidden -Xlinker "${SRCROOT}/AFNetworking2/libAFNetworking2.a"
่ฟๆ ทไน่ฝ่งฃๅณ็ฌฆๅทๅฒ็ช็้ฎ้ข
็คบไพ้กน็ฎ ไธ่ฝฝ้พๆฅ