本文翻譯自Libraries Used in the Top 100 iOS Apps
感謝原作者Ryan Olson
我一直懷有好奇心。促使我編寫FLEX調(diào)試工具的一個很大動機就是為了探索其他apps以及它們是怎么處理常見問題的。在周一時,我用一個越獄的iPhone和一個改進版的FLEX,對美國App Store上的前100個免費apps做了一些統(tǒng)計分析。
我創(chuàng)建了一個數(shù)據(jù)庫專門用來保存每一個app里用到的objective-c類,最后這個數(shù)據(jù)庫里包含的類數(shù)超過181000個。每一個app用到的類的中位數(shù)為1175,最多的那個app里用到的類的數(shù)量比這還大15倍。我想你應(yīng)該能猜出來是哪個app ;)。類數(shù)排名前7的apps都是來自Facebook和Google。

下一步,我開始通過類名來匹配一些常見的開源項目和第三方庫。最終得出用得最多的前100個第三方庫,這些庫涉及到的類將近5000個。
用得最多的庫是Facebook iOS SDK,共有67個apps涉及到了。網(wǎng)絡(luò)請求用的最多的是AFNetworking(39個),崩潰統(tǒng)計用的最多的是Crashlytics(38個)。 這其中還出現(xiàn)幾個蘋果的示例代碼,比如Reachability(38個)。涉及到CocoaPods的只有30個,這似乎說明大部分開發(fā)者還是使用傳統(tǒng)的方式來添加第三方庫。
| Project | # of Top 100 Free Apps (US) |
|---|---|
| facebook-ios-sdk | 67 |
| Bolts-iOS | 48 |
| AFNetworking | 39 |
| Google-Mobile-Ads-SDK | 38 |
| Reachability (Apple) | 38 |
| Crashlytics | 37 |
| Flurry-iOS-SDK | 31 |
| CocoaPods | 30 |
| GoogleConversionTracking | 29 |
| SDWebImage | 26 |
| Fabric | 25 |
| mopub-ios-sdk | 25 |
| Unity | 23 |
| AdColony | 22 |
| GoogleAnalytics | 20 |
| GTMLogger | 19 |
| comScore-iOS-SDK | 18 |
| google-plus-ios | 18 |
| OpenUDID | 17 |
| CocoaLumberjack | 17 |
| Adjust | 16 |
| ChartboostSDK | 16 |
| MBProgressHUD | 16 |
| OpenInChrome | 15 |
| TTTAttributedLabel | 15 |
| HockeySDK | 14 |
| google-breakpad | 14 |
| CocoaAsyncSocket | 13 |
| AppLovin | 13 |
| SBJson | 13 |
| FMDB | 12 |
| GLImageProcessing (Apple Sample) | 12 |
| pop | 12 |
| SSZipArchive | 12 |
| Appirater | 12 |
| BPXLUUIDHandler | 11 |
| VungleSDK-iOS | 11 |
| Protobuf | 11 |
| UnityAds | 11 |
| SSKeychain | 10 |
| KeychainItemWrapper | 10 |
| PLCrashReporter | 10 |
| secureudid | 10 |
| libPhoneNumber-iOS | 10 |
| oauthconsumer | 10 |
| InMobiSDK | 9 |
| MobileAppTracker | 9 |
| TapjoySDK | 9 |
| TrustDefender Mobile | 9 |
| iRate | 9 |
| OnePasswordExtension | 8 |
| SFHFKeychainUtils | 8 |
| Tweaks | 8 |
| cocos2d | 8 |
| GPUImage | 8 |
| KVOController | 8 |
| Nimbus | 8 |
| google-cast-sdk | 8 |
| HPGrowingTextView | 7 |
| Localytics | 7 |
| thrift | 7 |
| FormatterKit | 7 |
| Kochava | 7 |
| Mantle | 7 |
| Mixpanel | 7 |
| AppNexusSDK | 7 |
| JSONKit | 7 |
| NJKWebViewProgress | 7 |
| cocos2d-x | 7 |
| TouchJSON | 7 |
| SupersonicAds | 6 |
| TPKeyboardAvoiding | 6 |
| SponsorPaySDK | 6 |
| PhotoScroller (Apple) | 6 |
| TwitterKit | 6 |
| SpeechKit | 6 |
| ReactiveCocoa | 6 |
| UICKeyChainStore | 6 |
| WeChatSDK | 6 |
| XMLDictionary | 6 |
| SVProgressHUD | 5 |
| SocketRocket | 5 |
| libextobjc | 5 |
| Shimmer | 5 |
| TransitionKit | 5 |
| AsyncDisplayKit | 5 |
| SnowplowTracker | 5 |
| aws-sdk-ios | 5 |
| SVPullToRefresh | 5 |
| MMWormhole | 5 |
| Masonry | 5 |
| UIAlertView+Blocks | 5 |
| FLAnimatedImage | 5 |
| AppsFlyer-SDK | 5 |
| CardIO | 5 |
| TMCache | 5 |
| youtube-ios-player-helper | 5 |
| 4 | |
| Parse | 4 |
| MagicalRecord | 4 |
| GoogleMaps | 4 |
| GoogleAds-IMA-iOS-SDK | 4 |
| Braintree | 4 |
| PSPDFTextView | 4 |
| FXBlurView | 4 |
| ASIHTTPRequest | 4 |