Các libraries được sử dụng trong top 100 iOS apps
Tôi là 1 thằng luôn tò mò và tọc mạch. Đấy cũng là 1 trong những động cơ lớn nhất thúc đẩy tôi phát triển trình debug FELEX (tool này dùng để đọc ngược code của các app iOS) dùng để nghiên cứu và khám phá các apps cũng như tìm hiểu cách mà họ ngăn chặn các vấn đề thường gặp. Vào một ...
Tôi là 1 thằng luôn tò mò và tọc mạch. Đấy cũng là 1 trong những động cơ lớn nhất thúc đẩy tôi phát triển trình debug FELEX (tool này dùng để đọc ngược code của các app iOS) dùng để nghiên cứu và khám phá các apps cũng như tìm hiểu cách mà họ ngăn chặn các vấn đề thường gặp. Vào một ngày thứ hai đẹp trời, cùng với con iPhone 2G đã được jailbreak và phiên bản mở rộng của FELEX tôi đã tiến hành phân tích các apps iOS nằm trong top 100 trên US Apple Store.
Tôi đã bắt đầu xây dựng 1 cơ sơ dữ liệu các classes objective-c cho từng app. Số lượng classes trung bình của mỗi app là 1,175. Tổng kết lại thì cơ sở dữ liệu của tôi đang chứa hơn 181,000 classes. App có nhiều classes nhất gấp 15 lần con số trung bình =)). Tôi cá là bạn đã biết đó là app nào rồi.( chắc là Facebook ). Top 7 apps có nhiều classes nhất đến từ Facebook và Google.
Tiếp theo, tôi tìm kiếm những cái tên thường gặp của các classes và thử gán nó với các open source projects cũng như các thư viện bên thứ 3 (3rd party libraries). WOW, tôi đã tìm ra được có gần 5000 classes giống nhau từ 100 projects.
Project được sử dụng nhiều nhất là Facebook iOS SDK, được dùng tới trong 67 / 100 apps. Tiếp theo là AFNetworking thư viện dùng cho networking có mặt trong 39 apps, CrashLytics (thằng này là Fabric của Twitter xài hơi bị mượt) dùng để report các crash xảy ra trong app của bạn có mặt trong 38 apps. Các sample code được cung cấp bởi Apple cũng xuất hiện khá thường xuyên, ví dụ như Reachability 38 lần. Cuối cùng, trình quản lí depedence Cocoapods chỉ xuất hiện có 30 lần, điều này chứng minh 1 điều là rất nhiều lập trình viên vẫn đang add các thư viện vào project của mình theo cách cũ là kéo thả. Bên dưới là 1 bảng đẩy đủ danh sách các thư viện và số lần được sử dụng của nó trong top 100 apps.
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 |
Việc nghiên cứu các apps là 1 cách tuyệt vời để mở rộng kiến thức của bạn. Nếu bạn là 1 người tò mò và ham hiểu biết, tôi khuyến khích các bạn hãy đào sâu và tìm hiểu thêm.
Khóa học lập trình online iOS Swift cũng như thực tập của Techmaster sẽ giúp cho bạn có những kiến thức nền tảng vững chắc trong con đường lập trình ra những ứng dụng iOS cực lớn như top 100 apps ở trên.
Techtalk via Techmaster