I'm expecting suggestions for the concept related to APK Expansion Files in Android.
Google Play currently requires that your APK file be no more than 50MB. For most applications, this is plenty of space for all the application's code and assets. However, some apps need more space for high-fidelity graphics, media files, or other large assets. Previously, if your app exceeded 50MB, you had to host and download the additional resources yourself when the user opens the app. Hosting and serving the extra files can be costly, and the user experience is often less than ideal. To make this process easier for you and more pleasant for users, Google Play allows you to attach two large expansion files that supplement your APK.
Does apple give any support like this?
In my case I have 180MB audio file, I don't want to keep that with app resource. After installation I want this download from APPLE store.
I can able to keep this in my server and download when app opens first time, but I would like to know is there any other way to supplement for iPA.
Thanks InAdvance.
The maximum size of your ipa could be up to 2GB. For sizes upper than 50mb will be downloaded through WiFi or from iTunes. ipa less than that could also be downloaded through 3G network.
Try to make your app size as minimum as possible as users don't really like apps with larger size..
Well there's no thing here in iOS like APK Extension Files in Android.. Everything is your one single ipa which is compressed form of your binaries and resources.
Apple doesn't offer a facility for this specific use case.
You'll have to download the content when your app starts for the first time. Remember to store it in the caches directory or set the "do not backup" flag on the files. This is according to Apple's guidelines and required for app review. If you store it in the Caches directory, iOS may decide to delete the data when disk space is low, so be prepared to download it again if it doesn't exist when your app starts.
Unless you're using in-app purchases and targetting iOS 6 users only, you'll have to host it on your own servers. In-app purchases cannot be free.
Related
Is there any one familiar with this "Externally hosted private apps"? We are planning to host our Android Apk onto Managed Google Play but the apk size is around 300mb, it is way too much over the allowable size which is 100mb. We are not able to externalize the assets at the moment, so we are thinking to go for this "Externally hosted private apps", it sounds like it allows to by-pass size limit because we are hosting the apk on our premise and only the metadata is uploaded onto Managed Google Play. I can't find any doc saying the size limit though. Is there anyone is using this way and could you please share some information?
We have an Android application that supports up to 5 languages. If we were to pre-install a set of data, we would normally add 5 zip files (1 for each language). However, the data has since grown to be 100Mb each. As such, its not possible to package all the 5 zips in the assets folder.
What options do we have to creating a APK with pre-installed data? Is it possible for users to install a extension pack based on their device locale? Or do we have to upload 5 APKs in the Play Store, one for each language.
In documentation, it is given -
Google Play currently requires that your APK file be no more than
100MB . If your app exceeded 100MB, you had to host and download the additional resources yourself when the user opens the app.
Read this about APK Expansion Files.
Also, In this answer, it is given how to make .obb file as .zip file and upload it on Play Store.
OR
You can also make a check on App opens / or ask the user to download the language pack and download it directly from the server .(That would be simpler and easier one).
Docs say that APK size limit in Google Play is 50MB, with option for two 2GB expansion APKs.
However, I can find apps in Google Play store that are beyond this 50MB limitation (Gears & Guts for example is 371MB). I can download this game straight from Google Play itself without need for external downloaders. Do they have some extra feature as Top Developer to upload APKs over 50MB, or does Google Play just hide the fact that it's downloading expansion files rather than the APK itself?
Expansion files act kind of weird. To the user, they look like a normal app. A 50MB app with 150MB worth of expansion files will look like a 200MB download. Google Play will download the main app first. It will then download the main expansion file and then the patch expansion file. All in seemingly one lump sum.
However, it is possible for the download to be partial. I.E., the user can finish the main app download without the expansion files. As such, you MUST implement a custom downloader in order to retrieve the remaining files on the event the initial download fails. To make things a bit more complicated, sometimes the expansion files are not included in the initial download. I don't know what causes this, but I've seen it happen on rare occasions.
UPDATE: I just downloaded my APK again and Gears and Guts and they both show as one download but if you look at the status of the download in the status bar, it'll show that it's downloading an additional file.
I'm building an android app that provides several interactive adventures to the user. These use a lot of media (sound files and images, plus some xml), and therefore a lot of space.
I'm planning on a freemium model where the app is downloaded free with one adventure, and the user can buy more from Google Play.
What I'm wondering is:
1) How do I structure my app so as not to blow 50mb apk?
2) Does internal storage have a size limit?
3) The in-app billing examples I've seen all assume that it's for something trivial that's already in the app. How do I set it up so that an adventure is downloaded when it's purchased?
You can use addons on the Play Store that go up to 2GB (IIRC), so 50mb is only a limit fo the APK. Internal storage is limited by the device's /data partition size, but there is no per-app limit (at least not in stock Android). As for 3, you need to have your own server, verify purchases on it and give the app a link to download data once you get a valid order. How exactly you save, load and manage the downloaded data is up to your app.
I'm currently working on an app which downloads a zip file and extracts a bunch of tiny mp3 files into external storage. The zip file is about 2.5 meg.
I'm wondering if it would be a better idea to include the zip file in app resources, and then copy and extract it to the file system. This would prevent the headaches involved in something like a lost connection during the zip file download. I noticed some missing mp3s, and when I checked the zip file, the last 20 or so weren't it it. So, it looks like the system can successfully (an unfortunately) extract from an incomplete zip file.
The downside including the zip file in app resources is obviously that it increases the size of the app by 2.5 meg. I've specified "prefer external storage" in the manifest. This isn't supported before release 2.2, i.e. level 8, so I'm already excluding those phones, which probably is 20 or 30 percent of the total android phones. But I'm not entirely sure if that guarantees the app will be installed on the SD card.
It could be worth including the zip file in the app just to avoid the potential hassles in handling the download of the zip file; but if the size of the app makes it unappealing, then that's kind of a drawback - especially if the "prefer external" doesn't work on some devices.
Which is the better option? Ideas are welcome.
One of the highest selling Android Games, Gun Bros, does what you are thinking about: small app, that downloads the content on demand. This allows them to also serve ads while the content is downloading. In addition, by downloading the content you can make use of compression over the network thus reducing the total amount of data a user will actually have to use to get the whole application. I think in the end it is a personal preference, but I would lean towards downloading over the network.
Given the fact that there are some apps/games out in Android market which are in the 40+ MB range a 2 MB additional download doesn't seem that much to me. Anyway your users have to download it one way or another. Either in the apk or as a separate zip file.
Now Android market allows you to post updates to your application so your users can get new content through there.
Regarding prefer external storage, it is just that - a preference. If external storage is not available or a user is installing it on a 2.1 phone, then it will install the application to internal storage, as long as your applications minimum SDK level is 7 or lower.
But there are other applications I can think off that download content from sites, things like scripting for android (SL4A). If you want to update your game content that way, I would recommend creating a mechanism whereby your application can first discover the size of the download, then do the download. And once the download completes, verify the size against the size it should be. If the two don't match, then run the download again or something like that.
I'd recommend just including it in the apk file. Many apps on the market are like 5-10 MB, and games can be even bigger (I've seen games range anywhere from 1 MB to 40 MB), so adding 2,5 MB to your app shouldn't really be a problem, even if they don't support installing to sd-cards.
My phone for example have 2.1 and therefor can't install to the sd-card and I've so far never run out of space even after installing a bunch of 2-5 MB apps.
And no "prefer external storage" does not guarantee that it's installed on the sd-card, if the user doesn't have an sd-card for example, or if they choose themselves to move it to the internal storage.
Point is, adding 2,5 MB to your apk isn't anything anyone will really notice or care about, and you shouldn't need to either.