本文翻译自Libraries Used in the Top 100 iOS Apps
感谢原作者Ryan Olson
我一直怀有好奇心。促使我编写FLEX调试工具的一个很大动机就是为了探索其他apps以及它们是怎么处理常见问题的。在周一时,我用一个越狱的iPhone和一个改进版的FLEX,对美国App Store上的前100个免费apps做了一些统计分析。
我创建了一个数据库专门用来保存每一个app里用到的objective-c类,最后这个数据库里包含的类数超过181000个。每一个app用到的类的中位数为1175,最多的那个app里用到的类的数量比这还大15倍。我想你应该能猜出来是哪个app ;)。类数排名前7的apps都是来自Facebook和Google。

下一步,我开始通过类名来匹配一些常见的开源项目和第三方库。最终得出用得最多的前100个第三方库,这些库涉及到的类将近5000个。
用得最多的库是Facebook iOS SDK,共有67个apps涉及到了。网络请求用的最多的是AFNetworking(39个),崩溃统计用的最多的是Crashlytics(38个)。 这其中还出现几个苹果的示例代码,比如Reachability(38个)。涉及到CocoaPods的只有30个,这似乎说明大部分开发者还是使用传统的方式来添加第三方库。
| 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 |