{"id":17720,"date":"2017-04-12T15:56:46","date_gmt":"2017-04-12T19:56:46","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=17720"},"modified":"2017-04-16T15:55:10","modified_gmt":"2017-04-16T19:55:10","slug":"analysis-of-the-facebook-ios-app-bundle","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2017\/04\/12\/analysis-of-the-facebook-ios-app-bundle\/","title":{"rendered":"Analysis of the Facebook iOS App Bundle"},"content":{"rendered":"<p><a href=\"http:\/\/blog.timac.org\/?p=1707\">Alexandre Colucci<\/a>:<\/p>\n<blockquote cite=\"http:\/\/blog.timac.org\/?p=1707\"><p>The version 87.0 is now available: 253 MB on the same iPad Air 2 with only 64-bit code. In just 6 months, the Facebook.app size grew by 88 MB!<\/p>\n<p>[&#8230;]<\/p>\n<p>One of the reason the app size grew is due to multiple copies of the same resources inside the app.<\/p>\n<p>[&#8230;]<\/p>\n<p>When analyzing the version 66.0 I completely missed some amusing Objective-C interfaces, protocols and methods:<\/p>\n<pre>\n@protocol FBDeprecatedAppModule_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n@protocol FBLoginFacilitatingAppModule &lt;fbdeprecatedappmodule_do_not_use_or_you_will_be_fired&gt;\n@interface FBTimelineModule : FBNativeAppModule_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n@interface FBNotificationsModule : FBNativeAppModule_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n@interface FBProductionLockoutModule : FBNativeAppModule_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n@interface FBSearchModule : FBNativeAppModule_DO_NOT_USE_OR_YOU_WILL_BE_FIRED<\/pre>\n<\/blockquote>\n\n<p><a href=\"http:\/\/daringfireball.net\/linked\/2017\/04\/10\/facebook-app-crap\">John Gruber<\/a>:<\/p>\n<blockquote cite=\"http:\/\/daringfireball.net\/linked\/2017\/04\/10\/facebook-app-crap\">\n<p>It&rsquo;s the most popular third-party app in the world, and it&rsquo;s structured like a pile of garbage.<\/p>\n<\/blockquote>\n\n<p>Previously: <a href=\"https:\/\/mjtsai.com\/blog\/2015\/08\/28\/the-facebook-apps-18000-classes\/\">The Facebook App&rsquo;s 18,000 Classes<\/a>.<\/p>\n\n<p>Update (2017-04-15): <a href=\"https:\/\/twitter.com\/larryv\/status\/852989409658101760\">Lawrence Vel&aacute;zquez<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/larryv\/status\/852989409658101760\"><p>\nHappened across an old Facebook .ipa on a SuperDuper clone. The years have not been kind.<\/p><\/blockquote>\n\n<p>Update (2017-04-16): <a href=\"http:\/\/blog.timac.org\/?p=1744\">Alexandre Colucci<\/a>:<\/p>\n<blockquote cite=\"http:\/\/blog.timac.org\/?p=1744\"><p>The version 88.0 of the Facebook.app has now been released[&#8230;] As you can see from the smaller download size, the duplicated resources have been removed.<\/p><\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Alexandre Colucci: The version 87.0 is now available: 253 MB on the same iPad Air 2 with only 64-bit code. In just 6 months, the Facebook.app size grew by 88 MB! [&#8230;] One of the reason the app size grew is due to multiple copies of the same resources inside the app. [&#8230;] When analyzing [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"","apple_news_api_id":"","apple_news_api_modified_at":"","apple_news_api_revision":"","apple_news_api_share_url":"","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[25,31,1380,26,54,71],"class_list":["post-17720","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-facebook","tag-ios","tag-ios-10","tag-iosapp","tag-objective-c","tag-programming"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/17720","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=17720"}],"version-history":[{"count":3,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/17720\/revisions"}],"predecessor-version":[{"id":17751,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/17720\/revisions\/17751"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=17720"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=17720"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=17720"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}