Android APK size limitation in Google Play - android

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.

Related

Google play published apk and obb but need user to download only apk

My game 160MB of size, I separate it one apk and one main OBB, the question is, is it possible if publish it together but need user download only apk, it will download obb in the game later? The point is made it look smallest size of the game for download in google play and using google play server host instead of using our host.
From the documentation, If Google Play is able to download the expansion files (which is the case for most devices), it downloads them along with the APK. If Google Play is unable to download the expansion files, it downloads the APK only.
When the user launches your application, your app must check whether the expansion files are already saved on the device. If yes, your app is ready to go. If no, your app must download the expansion files over HTTP from Google Play.
So Google Play will always try to download the expansion file(s) at the same time if downloads the APK, so your application has everything it needs when the user opens it for the first time. Unless there is no available space to save the expansion file(s), or no network connection. So, no way to force users to download the APK only in most cases.
As #ztan said, in the worst case need to publish only apk file and download obb in the first time from our host.

Google Play - How to prevent downloading the large APK Expansion File when the user installs the APP from the market

many of my users have problems to install my App from the Play Store due to a lack of enought internal memory. The size of the App is: APK 37MB + EXPANSION 1,3 GB.
I was aware that many users don't want to have such big data in the system memory and implemented the licencing- and download-libary example, and changed the code that the expansion-file will be downloaded directliy to the physical sd-card. But the user can run my download-process only from the options-menu within the App.
.
The problem:
Google stated here:
"...If Google Play is unable to download the expansion files, it downloads the APK only."
But this seems to be wrong. Many user complain about installation issues and "pending/hanging" downloads. They say that when they install the App from the market that Google Play tries to download the OBB-Expansion File in the first place and (what makes it even worse) to the internal memory.
So the user can not start the App and make use of my download implementation.
As I want to make use of the security features of google's licensing mechanisms I had following idea:
Upload my app to the developer console without the expansion.
Upload another dummy-apk with the 1,3GB expansion, and don't publish it
Try to download the Expansion from the options-menu from my original app und use the licence-key from the dummy apk.
Can somebody confirm that this could work?
Is there an way to make Google Play download the large expansion directly to the external memory? Maybe if i modify the Manifest with:
android:installLocation="auto"
Any Ideas are appreciated!
Why don't you put the preferExternal value for installLocation in your manifest? This will put all files in external storage if available. Do this for all your apk files.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="preferExternal"
... >
from: app install location

Related concept for iOS like "APK Expansion Files in Android"

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.

Apk external data, Android Expansion

I am using concept of Android Expansion which helps us to remove obstacle of 50mb limitation of Apk.
Following all the steps http://developer.android.com/guide/market/expansion-files.html
I understood that you need to follow file format like this [main|patch].<expansion-version>.<package-name>.obb and did the same.
And also Expansion files may be in (ZIP, PDF, MP4, etc.) format.
I uploaded additional expansion files while publishing apk on Google play. At the time of download apk I get all the additional in my Local(Advanced latest Device), But through code I am not able to get the expansable files of my application.
In code looking at the sampleDownloader code I came to know that it requires three parameter (int type, int expansionCode, long fileSize)
here type: main/patch expansionCode: integer value but I am just wondering how to give FileSize in Long(exact)? and second thing its show message like Download failed because the resource could not be found
Any idea?
Update
Done, all steps are shown here
Did you go through Downloading the Expansion Files? It mentions that
If the expansion files are not there with your Application downloaded from Android Market,
You have to perform Application Licensing to get your app's expansion file names, sizes, and URLs.
Perform a request using Google Play's Application Licensing to get your app's expansion file names, sizes, and URLs.
Use the URLs provided by Google Play to download the expansion files and save the expansion files.
UPDATE:
No, its not compulsory that Google Licensing only works with paid Application. There is a clear Note: defined in the Docs itself that any application may use licensing service to initiate the download of an APK expansion file. But, in that case your request will be only for expansion files and not for a check whether the user paid for the app or not.

Is Downloader Library required for Android expansion files?

My app requires a lot of image resources, so I've had to package them into an expansion file. I've got this working fine when I manually copy the expansion file to my emulator's shared storage. What's unclear to me is the whole download process.
In Google's (often frustrating) documentation, it says:
On most devices, Google Play downloads the expansion file(s) at the same time it downloads the APK, so your application has everything it needs when the user opens it for the first time. In some cases, however, your application must download the files from Google Play when your application starts.
My app will be free with a single expansion file. Can I actually rely on the expansion file being downloaded with the app? Or must I implement the downloader service to ensure that the expansion file is downloaded when the app starts?
What are the circumstances under which the expansion file would not be downloaded with the apk? I suppose that the user might erase or remove the shared storage volume onto which the expansion file was originally copied, so that might be a case I'd have to worry about.
Tell me I can be lazy! Come on! And then someone link to this question on a blog post lamenting the laziness of app developers. OK, OK, I won't get all defensive. I just want to understand the mechanics here, and yes I would rather avoid the extra headaches of implementing the downloader service. I'm not a full-time Android developer, and I've got other things to do!
Thanks
The play store will attempt to download the expansion files but network connections fail or time out etc
You should check the files are available when your app starts and manually download them if they are not.
If you don't allow for this eventuality then some users will be unable to use your app unless it will work without the expansion pack.

Categories

Resources