TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

The Apps are Too Damn Big

176 pointsby burnblueabout 13 years ago

39 comments

robomartinabout 13 years ago
I have a feeling that Apple might just start to run into the kinds of realities MS and others have been living with for years. Either they choose to piss off millions of users of older devices or figure out how to allow for evolution without causing problems for the installed base. Or, maybe they don't.<p>As an iDevice user I am glad that I chose to buy all my devices with the absolute max storage available. Everything I have has 64GB. So, we are good for a little bit.<p>As a developer I cringe at the situation. I am currently working on an app that has about 400 graphics files that will ship with the app. If you do it their way you have to produce each one of these files in four different resolutions. This means that the image directory is now huge. It is three times larger than a scenario where we would have app bundles customized for each device.<p>In looking at the problem we decided to do the following. All of our files are produced at what would be @2X resolution but are named without the @2X. We are going to ship the app with just 400 files at a single resolution instead of 1600 files at four different resolutions. In the end, if you do the math, your app bundle will be significantly smaller due to the significant reduction in size of the images directory.<p>As far as performance is concerned, the images work very well all they way back to iPod touch v2.0 devices. No issues there. So, that's the plan.<p>Maybe what Apple is pushing all of us towards is a scenario where we are forced to detect device type and capabilities and load resources accordingly on app first run. Think about this for a moment. Now their servers don't have to push out so much content and you will have to foot the bill for your free graphics-intensive app getting three million downloads. I could be off base here. But, I just don't see a way to deal with this unless you are willing to ship your app with thousands of files, most of which will never be used by the device the app is installed on.<p>I also think it's high time that apple put out an iDevice with the ability to expand memory capacity in the field. I know, I know, they want to control it all. They are big enough to have custom Flash chips made with all the encryption they want so people can't move the flash chips from phone to phone and steal software.<p>Happy coding.
评论 #3813754 未加载
评论 #3813317 未加载
评论 #3813359 未加载
评论 #3813396 未加载
评论 #3813519 未加载
评论 #3813176 未加载
评论 #3813279 未加载
tolmaskyabout 13 years ago
I don't understand why "universal binaries" exist at all on iOS. On desktops where the app space is more "free" it has a purpose, but it's not like users are regularly moving apps from one iDevice to another -- so what on earth is the point of having three different things altogether? The much more intelligent solution would have been to simply allow developers to upload 3 different binaries, but only <i>present</i> it as one on the app store. Then the app store correctly downloads the correct one depending on your device (iTunes can keep all three if it wants or whatever), and then there is no need for the app store to muck around in your app internals or anything.
评论 #3813311 未加载
评论 #3813933 未加载
mrmekonabout 13 years ago
This dilemma isn't limited to iOS, or mobile apps. It's <i>all user-facing software</i>. Everything that ships to users these days -- traditional desktop software, web apps, even static blogs -- is much larger than it needs to be to achieve its functionality.<p>This isn't necessarily a bad thing. There's a huge tradeoff between size of the product and development speed. We've switched to a pattern of bundling lots and lots of large libraries with everything we ship, and tons of static resources, and tons of translations, and on and on. And it makes everything huge.<p>But it means you "full-stack engineers" can knock out full-featured, money-making web apps in hours/days/weeks instead of weeks/months/years. Most of the "look at the monetized product I wrote this weekend!" posts that show up on HN could be a fraction of their size, but would have taken much longer to develop.<p>The link is specifically complaining about resource files, which are probably easier to manage than libraries, but it's still probably not worth the effort for Apple. By making it as simple as possible, developers don't waste any time worrying about how they are going to structure resource usage for their app. Just throw everything in there and get on with it.<p>At work, I develop for platforms with &#60;1MB of RAM, and we can do plenty with them, but development time is ridiculous. You can knock out a full online dating site in 4 hours, eh? It takes that long to print "Hello World" on a serial port of a new microprocessor... maybe longer.<p>My side projects are in horribly wasteful monstrosities like Python and Objective-C/Foundation because, in my spare time, I like projects to actually get finished... to hell with binary size.
gurkendoktorabout 13 years ago
I agree with all the cynics saying that Apple doesn't care. Even if app sales go down because of full devices - please keep in mind how their profits are split between hardware and software/services.<p>I would go even further: <i>They wouldn't even change it if it were free and easy to do.</i> If they filtered out Retina graphics for non-Retina devices, the old iPad could hold more apps than the new one! If you upgraded to the new iPad, you would have to trim down your collection. It just doesn't make any business sense for them.<p>I guess everyone with a jailbreak will rejoice, this sounds like something a Perl one-liner could fix over ssh. And it could remove the builtin apps while they're at it. I am honestly jealous.
michael_millerabout 13 years ago
I think this is a bigger question of backwards compatibility. Surely Apple could find a technical solution to downloading Retina assets to non-Retina devices, but at the end of the day, what does this accomplish? It means that users of older devices will have a <i>slightly</i> better experience, at the expense of a nontrivial amount of work. Were such a scheme to be implemented, the developer would likely have to mark Retina files manually and Apple would have to add infrastructure on their servers. All this for something that will be pointless in the near future when Apple stops selling non-Retina iOS devices.<p>I don't mean to assert that Apple shouldn't attempt to separate out Retina assets, but I think it's worth considering the opportunity cost. There are a lot of other things Apple's engineers could be working on. Should this be their top priority?
评论 #3813000 未加载
评论 #3813048 未加载
评论 #3813075 未加载
评论 #3813046 未加载
thasminabout 13 years ago
The comments I see are about technical solutions. I think Apple's happy that there's finally a reason for people without humongous music collections to pay $200 for 64MB of flash memory.
评论 #3814850 未加载
评论 #3813235 未加载
评论 #3813523 未加载
brokentoneabout 13 years ago
I like this author's thoughts, and there are some creative solutions offered by him and the commenters there on how to thin the assets. However, I would be interested to see how the assets' size stacks up against the actual binary.<p>Some of the biggest apps on my iPhone are iBooks (57.9MB) and Nook (51.3MB). I doubt their pretty little icons take up the lion's share of that size. I mean, Kindle does it in a measly 23.5MB (sarcasm, still big). I wonder, for instance, how much language support weighs in at. There was a mac program I used some years back called monolingual that would remove other languages, you know because I'll never need my laptop to work in Farsi, and thin the binary architectures. Saved many a GB when they were much more precious.<p>I'm assuming that most of these apps are made with some fancy service that generates an app for every platform under the sun from one app creator program, and as such, each native app is way bloated.<p>But, the consumers don't notice or care, so app creators are just going to be as inefficient in the interest of jamming new features into an app over optimizing it.<p>(edit: spelling, added parenthetical to Kindle app)
评论 #3813398 未加载
评论 #3813272 未加载
sidwynabout 13 years ago
As an app developer myself, I've (recently) just began using ImageAlpha + ImageOptim (<a href="http://pngmini.com/" rel="nofollow">http://pngmini.com/</a>) to compress all my PNG images. These really do the job better than PNGCrush (Xcode's default) and cut them down to 50% of the original size without losing much quality.<p>From one app developer to another, if you're adding retina assets for the new iPad like me, remember to use ImageAlpha first!<p>P.S. If you're unsure of its advantages, check out this case study of ImageAlpha + ImageOptim used on Tweetbot: <a href="http://imageoptim.com/tweetbot.html" rel="nofollow">http://imageoptim.com/tweetbot.html</a>
jfosterabout 13 years ago
This is device fragmentation, like Android and Windows face. SVG might help in some cases. Apple's SDK should accept the best quality assets and resample for app versions for each device. Some apps will still benefit from targeting devices more specifically, though.
评论 #3813528 未加载
joeld42about 13 years ago
There's a standard naming convention, iOS load image@2x.png on retina and image.png on non-retina but it's not strictly enforced so apple couldn't delete all the @2x images on a non-retina device. Plenty of universal apps use the @2x iphone target images for the iPad display, for example, and this suggestion would break those apps.<p>As a developer, I've been more and more often leaning towards using tools like paintCode or just writing code for custom widgets instead of trying to make the 4 different images for iphone/ipad/iphone@2x/ipad@2x. This is a win/win because it looks better (except at very low res) and keeps the size of the app down.<p>Having the app store serve different apps for different target devices opens a can of worms. For example, if you backed up on one device and restored on another, you could get the wrong one. I think Apple made the right choice in preferring to make sure your apps work everywhere rather than save storage at the cost of complexity. And if that means they're nudging the consumer to upgrade to the lastest and greatest, I can't blame them for going that route.
tibbonabout 13 years ago
Garageband is big primarily due to the sound sets of samples that it comes with- not because of the program itself or the UI.
评论 #3813368 未加载
MBCookabout 13 years ago
I sympathize with the problem. Some of the apps on my iPhone have become bigger since they're universal and now include the retina iPad graphics. I agree with some of the other commenters here that the ideal solution would be to not download/remove the unnecessary graphics once on device.<p>But as I've run down on space, I've started to notice how odd various app's sizes are. There seems to be very little correlation between what I expect and the actual value. Here are some examples from my applications:<p>First, some apps that have sane sizes<p><pre><code> Infinity Blade - 1 GB Rage - 830 MB Ghost Trick - 531 MB Groove Coster - 154 MB Steambirds Survival - 60 MB Doodle Jump - 20 MB </code></pre> But many apps seem to use way more space than I would ever expect:<p><pre><code> Worms 2 Armageddon - 688 MB Worms - 209 MB Catan - 171 MB Boggle - 104 MB (really? REALLY?) XFinity (Comcast App) - 41 MB (has downloaded another 50 on my device)</code></pre>
robin_realaabout 13 years ago
This doesn’t address the root problem, but liberal use of Imageoptim and ImageAlpha can drop file sizes for images by 50-60% in extreme cases. As a web guy when bandwidth matters I’m very familiar with these techniques, but maybe they haven’t got traction in the app world?
评论 #3813434 未加载
pornelabout 13 years ago
There is a solution to this: PNG8+alpha format. It's 60-70% smaller than 32-bit PNGs.<p>Most apps' size can be halved this way: <a href="http://imageoptim.com/tweetbot.html" rel="nofollow">http://imageoptim.com/tweetbot.html</a>
icefoxabout 13 years ago
So here is the big question: Are you going to buy less apps because of this "issue"? If not then there is no incentive to really fix it, nor for developers is it a problem that will be addressed.
评论 #3813305 未加载
评论 #3814186 未加载
jiggy2011about 13 years ago
On the iPad is it possible to download an app and somehow cache it onto some other storage medium (i.e a PC or Mac HDD) so you can uninstall it, backup all your personal files and then sync it back over later (via LAN or USB)?<p>I ask because I was thinking of getting an iPad3 in the near future and was tempted to get the 16 GB model because I have many TBs of storage elsewhere on my PC/NAS/Servers so I'm not going to use it to archive anything long term. Plus an extra £70 for 16GB seems steep when I could get a 64GB SSD for the same.
评论 #3813931 未加载
makecheckabout 13 years ago
This isn't just in mobile apps, it happens on the desktop too; and it's a tricky problem. In general one has to blow up the size of an app to preserve a good user experience in other areas.<p>Consider download complexity. How many "versions" of your app would you need to have to give each user the optimal installation size? How often do you want to deal with people downloading the wrong one and having a bad experience? What about 3rd party distribution...any number of other sites may choose to offer download links and you have basically no control if they screw something up.<p>Another is problematic upgrades. Suppose you optimize a download for a user's <i>current</i> machine. Then they buy a new machine. They won't really try to understand why your app is now looking strange or misbehaving; they'll just think your app sucks.<p>On the Mac side I've chosen to go the oversized route. There's no doubt that my app bundle is 2-3 times as big as it ought to be (and unfortunately two thirds of the binary bloat goes towards supporting systems that few users are likely to care about at this point). But then downloads are simple: just "click here for the new version" and whatever your system you see something that works.
daniel_iversenabout 13 years ago
It does seem to me like this "space issue" is a very annoying an unethical way for Apple to automatically and slowly force people into buying newer devices with more storage (for whom the old 16GB versions were enough), and it comes as a surprise for most who start running out of space on their device and can't do anything about it. Also (and this is not Apple's fault) the new hi res photos and recorded videos contribute a lot too.
sumukh1about 13 years ago
One possible solution is having apps ship with 1x graphics with an optional download to have 2x. That solution, however, is not something I would like as a developer or as an user.<p>Over the next few years, we'll probably go back to having just two screen sizes (Retina iPhone + iPad). This is just a side effect of the transition to retina, and it will go away soon.<p>Though from Apple's perspective it would make more financial sense to have you go buy a 64GB iPad. :)
评论 #3813029 未加载
WiseWeaselabout 13 years ago
Typically, when the App Store complains about lack of space to update all, you can still update them all one at a time, or do the big ones first, then, update all. That's because when you update apps, you've got two copies of an app on your device until the old version gets deleted, and when you click 'update all', it checks if you have enough space for all the apps in question to be duplicated.
kmfrkabout 13 years ago
Settings &#62; General &#62; Usage.<p>You're probably going to get very comfortable with this settings at some point, if you don't have a 64GB iPad.
virtualritzabout 13 years ago
A lot of graphics on these devices are vectors (Inkscape SVG, Illustrator, etc.). A possible solution would be a cache on the device where each app has a slot. The app can store data in this cache (i.e. images rendered on-demand into bitmaps). The total size of this cache would be limited (user adjustable, maybe). When the cache runs out of space, data from least used apps gets purged. That means, when I want to run my least used RPG on my iPad 3, after maybe a month of not using it or so, maybe I have to wait 1-2mins for it to turn all the graphics back into bitmaps. But i'd never run out of space for games that use assets that can somehow be described more lightweight that using bitmaps.
JoeAltmaierabout 13 years ago
Let me just say I enjoy the angst the pad-folks are encountering, once they find out their portable device is not all it was cracked up to be.<p>To an embedded developer, the hype about 'the desktop is dead' and 'all apps must go portable' was ludicrous. Speed, space, resolution, connectivity all suffer in the mobile environment. No amout of cool design will fix this, wishful thinking aside.<p>Poor developers! You have to work hard to fit into the space available. And maybe abandon wasteful tools that squander memory and cpu, in favor of tools that make you face the hard choices. Guess what? Its called software engineering, and you're supposed to have the skills to do it. Stop complaining!
taylorbuleyabout 13 years ago
Given the evidence presented here, the courteous thing to do would seem to be to host the images remotely. However it makes sense why developers would default to frontloading the image loads as there's per access latency and overhead associated with hosting the images remotely vs. a one time hit for downloading the images from the App Store.<p>Instead of using a CDN and eating the bandwidth cost of retina display-ready assets, it sounds like apps companies are publishing the cost onto users for increasingly resolute image assets.<p>That or people should buy Apple's larger models if they expect to do serious computing on the iPad.
sghillabout 13 years ago
I find the discussion over profanity in posts on HN interesting. When I initially read the post, I expected similar comments about professionalism and unnecessary vulgarity.<p>Instead, just about every response (save one on the actual linked page), addresses the issue at hand. It seems to suggests that there is an appropriate level of sensationalism to get your message heard. Anyone have some sort of algorithm that rates a post for how attention-grabbing vs. off-putting its words are?
ricardobeatabout 13 years ago
Wait, 6gb for 20 apps? If they are already using 4gb (sounds reasonable from the numbers), that would mean 500mb per app. Unless they are all games, something isn't right.
shuzchenabout 13 years ago
I don't know why we're not moving into vector for these type of things. Should definitely help with the resolution explosion we've been seeing occurring.
abuzzoozabout 13 years ago
Wouldn't an SD card slot help?
评论 #3813334 未加载
Toolukaabout 13 years ago
Can someone clarify, is this behavior on iPad3 or on previous generation? Because iPad1 and iPad2 clearly don't display such behavior. I have around a hundred apps on iPad2, and before and after mass updates went out they took relatively same space, 15Gb or so. Nice indicator is RealRacing2HD - 1.1Gb in size before and after upgrade. 6Gb apps triple in size? Really?..
leetroutabout 13 years ago
I am very thankful that I am not alone. If I could roll back the clock 3 weeks I would have bought the 32gb (at least) instead of the 16gb model. I've already seen this pain point coming after chewing through 6gb in one evening of app shopping (with Infinity Blade 2 at a whopping 900mb). Not to mention the available capacity on the 16gb is realistically 13gb.
10dpdabout 13 years ago
I've also ran into the issue of not being able to update all my apps so now only tend to pick and update those apps that I use frequently.<p>As it only takes <i>one</i> large app to disable the whole update all process, it'll be interesting to see how this impacts the overall update numbers.
jonnybaabout 13 years ago
I think if they did this app developers would need to sign and submit four different binaries (iphone, iphone_2x, ipad, ipad_2x). Technically you can already do this. I guess if it's a paid app, the user would have to pay for each device type.
vicapowabout 13 years ago
anyone who does HTML5 / PhoneGap style development have a solution? I'd imagine one would be able to have the app detect which resources it required and have them be downloaded and cached during runtime.
robomartinabout 13 years ago
Thinking some more about the problem I concluded that I don't personally have a problem with the creation of multiple versions of the artwork. Most of it can be done through batch processing and some hand tweaking. No big deal. The issue is with app bundle bloat and the download of a huge number of files into a device that will not use them.<p>Here's an off-the-top-of-my-head potential solution:<p>Update Xcode to sensibly handle file structures within a project. You know, the blue folders. We currently use blue folders for all app assets because, well, can you imagine maintaining 1600 files all in on directory?<p>The problem with blue folders today is that they needle you with pain. You have to remember to do clean builds (scripts during the build don't seem to work reliably) and, in general, be very aware of them. Once they are part of your process its not a big deal, but I think it's high time that Xcode come to this century and do something that most other development systems have been doing for, I don't know, decades?<p>Anyhow, once that is in place, you could have a directory structure such as this one at the app root:<p><pre><code> App Resources App Resources @2X App Resources ~ipad App Resources ~ipad @2X </code></pre> I then want to include a JSON file at the app root level that points out the root directories for each device category. Maybe something like this:<p><pre><code> { "ipod 1": "App Resources", "ipod 2": "App Resources", "ipod 3": "App Resources", "ipod 4": "App Resources @2X", "iphone 1": "App Resources", "iphone 2": "App Resources", "iphone 3": "App Resources", "iphone 4": "App Resources @2X", "iphone 4S": "App Resources @2X", "ipad 1": "App Resources ~ipad", "ipad 2": "App Resources ~ipad", "ipad 3": "App Resources ~ipad @2X" } </code></pre> Now provide for a way to load this JSON data into the app and have relevant methods, such as "imageNamed" use a device specific path. My guess is that you'd want this to be by extension rather than modification so:<p><pre><code> + (UIImage *) imageNamedAndKeyForPath:(NSString *)name key_for_path:(NSString *)key </code></pre> Obviously the key would be used to retrieve the value from the JSON file or, preferably, a value already stored in memory when the JSON file was parsed at app start time.<p>Apple then, would have a mechanism to only deliver the appropriate resource files during an in-device installation. iTunes could download the whole set and also be intelligent during to-device installation. They'd use the JSON file to have the developer tell them which files to deliver.<p>Any files left outside the designated directories would be treated as they are today: Everything goes to every device.<p>Also, other methods that take a path, such as "imageWithContentsOfFile" ought to have a version that uses the aforementioned mechanism while --and this is important-- letting me specify relative paths from the device-specific folder. If I have something like this:<p><pre><code> &#60;device specific folder&#62; + character + arms + legs + head + background + trees + rocks + clouds </code></pre> I ought to be able to access the path structure relative to the chosen device-specific directory of assets.<p>On first inspection this sounds like a good solution. I haven't thought it through entirely. I'd be interested to hear of what holes the idea might have.<p>Something like this could have a striking effect on app bundle size, particularly on older devices. I don't think that it places an undue burden on developers either, if anything it makes things easier. Heck I'm sure Apple could even find a way to make it a marketing point: "Four times as many apps in the same space".
评论 #3814734 未加载
评论 #3815012 未加载
评论 #3814593 未加载
yaixabout 13 years ago
If your ipad has become too small, i guess you'll have to buy a newer model. Now /that/ makes a lot of sense to apple.
SeoxySabout 13 years ago
Also, don't forget that on-the-fly changes to the .app bundle would break its code signature.
stephengillieabout 13 years ago
You're right it wouldn't
评论 #3812999 未加载
评论 #3812951 未加载
ktizoabout 13 years ago
Use vector art for assets wherever possible.
kumarmabout 13 years ago
This is also ONE of the MAIN reasons why iPhone users use WIFI from often than Android Users. This is also ONE of the MAIN reasons why Network is chocked because of iPhone.<p>Apple to save a penny, costed heavily for everyone else involved.