3 ms·
Too little, too late. Google Play makes you jump through a bunch of hoops to ship an oversized APK, and the tools they provide are totally inadequate. (For exa
by iainmerrick 11y ago
Too little, too late.
Google Play makes you jump through a bunch of hoops to ship an oversized APK, and the tools they provide are totally inadequate. (For example, see this years-old bug affecting expansion files: https://code.google.com/p/android/issues/detail?id=61344 https://code.google.com/p/android/issues/detail?id=61344)
Raising the basic size limit to 100MB doesn't fix any of the underlying problems. In fact it may make things slightly worse for users, because some developers who would otherwise have been forced to ship variant APKs or an expansion file (more work for the developers, but easier to download for users) will now just ship a single bloated APK instead.
When you get an app update, why do you still have to download the whole thing? Why not a binary delta? For that matter, why can't the developer upload a binary delta to the store? The Play Store holds golden copies of each version of the APK, after all. Instead, we have the clunky expansion file system, and each developer has to do the work.
When shipping variant APKs to different phone sizes / architectures / etc, why does the developer have to build and upload each APK separately? Why can't the Play Store just do the "app slicing" automatically? In most cases it already has all the information it needs.
I realise that all this stuff is hard work, and my complaints really boil down to "Google should do all that hard work for me". But they have thousands of engineers working on Android and Google Play, so I don't think it's too unreasonable.
- parksy 11y agoGenuine question, what better solution is there on the market at the moment? I like the idea of binary deltas and expansions if handled well, and I imagine a service that makes it easy for developers to distribute in this way would be a goldmine.
- iainmerrick 11y agoI wish I knew! I've used Google Play, iTunes Connect (i.e. the App Store), the Amazon Appstore, and the Humble Mobile Bundle. iTunes Connect is overall a bit nicer to work with (but often fails with completely incomprehensible errors, usually involving certificates and code signing). The new "app slicing" thing Apple are rolling out sounds very good. On the downside, it's a very closed system. Apple don't want you to script or automate anything, they want you to use their tools, of which some are slick and some are very rough. Amazon's store is similar to Google Play but much worse overall. Their web app is very clunky. Good: no APK size limit, so no expansion files needed! Bad: big APKs need to be uploaded via SFTP(!??). No clever binary deltas or anything as far as I can tell, just massive uploads and downloads for everyone. In the Humble Bundle, a lot of the work is done manually. That sounds bad but they've actually been a real pleasure to work with. It's great when you're doing a Humble release of an existing game; do a few code tweaks if necessary, upload to Dropbox and mail them a link + hash. I don't think they do anything fancy in their back-end, though (and they probably don't have enough engineering capacity to do so). I'd be interested to hear how Steam compares.
- rdsnsca 11y agoThe MAS (Mac App Store) uses deltas for upgrades, and has for quite awhile. Sometimes a delta update will fail and you have to re-download the full app but thats rare.
- inversionOf 11y agoWhat does "too little, too late" mean? Is Android now doomed? Android updates have been incremental updates for three years now (introduced at the 2012 I/O, and immediately enabled). Your point on that is confused in any case -- why can't it do delta updates (it does...), and why can't the developer do it, but also why does the developer have to do it? You're incredibly complaining about a situation you invented. And larger APKs are a problem because now the ridiculously easy tools that Google already provides (generating thin binaries for varied targets is extraordinarily simple. A bug regarding expansion files...what is the point of even linking that?) will somehow be unused? Your post is a very poorly informed rant. I have no idea how it sits on the top.
- iainmerrick 11y agoWhat does "too little, too late" mean? Is Android now doomed? I'm just frustrated that they're just doing tweaks, rather than any deep fixes. Obviously the platform isn't doomed, because the competitors aren't much better! Android updates have been incremental updates for three years now. Hmm, OK! I have seen some news articles around that, but I can't find an authoritative bit of documentation or official blog post. If you have a link handy, that'd be great. I've observed in practice that all my test devices seem to do full downloads rather than deltas, though many of them are running older OS versions. And I'm mostly concerned about expansion files. It's possible that the APK parts use deltas at least some of the time, though again, in my spot checks that doesn't seem to be the case. why can't the developer do it, but also why does the developer have to do it? What I'm envisaging is, the developer builds APK version 2 locally. They send a v1 -> v2 patch to the Play Store (which already has the master copy of APK v1). Use checksums to ensure it's all working as expected, and in the worst case fall back to a full upload of v2. Maybe from Google's point of view it isn't worth spending any engineering effort to help developers who don't have access to really fast uploads. But it's not rocket science and it sure would be nice. A bug regarding expansion files...what is the point of even linking that? I think it's relevant because their recommended method of shipping a really big app is to put resource data into an OBB (a virtual filesystem), but the tools for building an OBB don't actually work reliably. Worse still, Android itself can't mount an OBB reliably! So if you care about stability and/or supporting a decent range of OS versions, you can't use OBBs at all. You have to use a zipfile or something as your expansion file, and manage it yourself. Not a huge deal, but it's more work, and it all contributes that little bit more to the bloat many people complain about.
- pjmlp 11y ago> But they have thousands of engineers working on Android and Google Play, so I don't think it's too unreasonable. Yes, but given the quality they deliver, I seriously doubt their skills. Before the downvote rampage starts, just check: - Bug tracker for each Studio release - Broken NDK toolchains - No proper support for shader and Renderscript debugging - How they managed to have one of the worst JIT and GC implementation than many embedded Java vendors for so many time (don't have an ART enabled device to check how it improves over Dalvik). - How they aren't able to deliver a bug free Support Library, even though it is visible their own teams (e.g. YouTube) have workarounds for the bugs - No roadmap on improving the Java situation - No roadmap for NDK improvements But hey, just watch all the goodies they deliver with Play Services.
- xd1936 11y agoGoogle Play has been doing delta updates since 2012. http://www.androidcentral.com/what-are-delta-updates-and-why-youll-forget-about-it-tomorrow http://www.androidcentral.com/what-are-delta-updates-and-why...
- iainmerrick 11y agoIs there an up-to-date official doc or blog post about that? I haven't been able to find one. It seems like in practice expansion files never use deltas, and (as far as I can tell) APKs generally don't either. I could be wrong about the APKs, or maybe my updates are always big because I'm using native code. [Edit to add: my paranoid theory is that they pre-announced this, but then never properly shipped it. But I'd love to be proven wrong!] [Edit edit: OK, it sounds like APKs already get deltas and it all just works invisibly. But I don't think expansion files get deltas.]
- fredrik-j 11y agoExpansion files do support a so called patch version[0] - which may sound like a delta but it isn't. The job of creating a patch and merging it with the main expansion file is placed on the app developer. Additionally there can only be one patch to each main extension file. There is not a new delta generated for each new version of the expansion file. I'm not at all surprised if most developers just ignores the patch option all together and just re-uploads a new main expansion file every time any content has changed. Besides, while seemingly well documented[0], IME expansion files requires quite a lot of undocumented magic. Including patching Google's own source code. Code that they recommend that you vendor into the app rather than include as a library. Further the user experience is less than stellar. On many devices the expansion is only downloaded after the app is started the first time. So the app needs to work even while the file is missing, and at that time manually request that the system retrieves the file. BTW, did anyone notice the fine print of this announcement? Only devices with Android 4.0 or newer supports 100 MB apk:s. If your app supports 2.3 - i.e. some 70 million Android users - you're stuck at 50 MB and will have to keep using expansion files to serve those users. [0] https://developer.android.com/google/play/expansion-files.html https://developer.android.com/google/play/expansion-files.ht...