when deploying my IOS app to my mac the IPA file size is 87.3mb - After I publish the app to the iStore, Apple sends me a warning telling me that after they do some stuff it will be larger than 100mb and will only allow users to download it over wi-fi. It's quite imperative for me that my app stays below 100mb so that users can download it via mobile connection
Now - I've done some things that in my mind that should have decreased the app size but to no real avail
Compressed all the images I use in the app (combined size of all the images is less than 3MB - including splash screens and launcher icons)
Removed all unnecessary references to units (cleaned up the "using" sections)
Removed all design time components that can be instantiated in code
I'm not using livebindings
I am using Firedac with SQLite (the database is less than 1MB)
The APK file size is 43 mb which is well below the 50mb max google wants it
Any help or advice in getting the Apple IOS IPA file smaller would be great
edit
Upon further inspection as suggested by #Robotic Cat in the comments I find that the Unix Executable is the culprit... this is then definitely something to do with how delphi builds and links the package
end edit
Related
I'd really appreciate if anyone enlighten me about this issue.
I've an example which is detailed below, if necessary i can give more example.
This is size info about items my app is composed of:
Size of .ipa file: 105 mb,
Size of application file(located in Payload folder): 184.6 mb,
When i show package contents of application file, i've got executable and media sources whose total size amount is circa 36 mb:
Size of executable file: 29.9 mb,
Size of media sources(splash images, etc): circa 6 mb
Also, in Symbols folder(which located in the same directory with Payload folder) there are 2 .symbols files. Their sizes are 37.8 mb and 40.4 mb.
Finally, in App Store my application appears with size of 171 mb.
While .ipa file is much more less (105 mb), i cannot get why App Store size is so great.
Previously, my apps' size were too close to .ipa file size. However, for last couple of months there are great difference between the sizes(this also valid for updated apps, not only valid for new apps). I could not find updated statement related to this issue on Apple's documentation. If anybody clarify this issue for me or direct me any source on this issue, i'd really be thankful.
One difference since iOS 9 is app thinning: "A variant contains only the executable architecture and resources that are needed for the target device."
Many resources not needed for a specific device may be removed, so the size downloaded to a device is based on that device.
There may also now be a difference on how thw esize is reported in the app store since there is no longer one-size fits all devices.
Additionally the upload to the app store may contain Bitcode which is not downloaded to the device.
When you upload file your executable is not encrypted so can be packed effectively by zip. However, when you download from the App Store executable is encrypted so it cannot be compressed that good anymore, so IPA size is increased.
When my app starts on my device xcode says it uses 3.4MB of memory.
When I use every feature in my app on my device xcode says it uses 14MB of memory.
When i submit my app on the appstore, when a user goes to download it, under information what will be the size of my app?
thankyou
That's your RAM usage, and has nothing to do with the download size.
The download size will be the size of all the png images/videos/etc in your application, plus a tiny bit more for the actual code.
To find out the exact number, do an "archive" build, and in the organiser there is an "estimate size" button.
The size of your app and the amount of memory it uses while running will be different because these are different things.
The size of the app is the size of the IPA on disk (which is a zip file) containing:
code (e.g. armv7 and armv8 slices)
supporting files (e.g. graphics, sounds etc...)
I would do an Ad-Hoc build in Xcode and look at the IPA produced in order to get the size.
i'm going to build an IOS app for the IPad, and i made a quick test.api. My issue is that the size of the file is already 13 MB big. i added a video and a sound for testing (together like 9 MB) so i was wondering is there a minimum file size when making a ipa in Flash Builder?
Maybe around 4 MB?
13MB - 9MB = 4 MB?
and then 4MB is the standard ipa size.
Flex/AS3 mobile apps must include the SDK in the output in order to run. It is referred to as "Captive Runtime" and is an option on Android, but mandatory on iOS. Essentially, they are native apps that run as virtual machines that allow you to display your AS3/Flex apps on the device without a hint of Objective-C or Java. Those SDKs are far from small. If you look in %FlashBuilder Install Directory%/sdks/, you'll see that those SDKs can be close to 1GB in size. Obviously, that doesn't all get included, but from my experience, the smallest IPA I have ever created was around 8MB.
I don't have a solid answer for what the absolute minimum size of those SDKs are, and Google turned up nothing, but my guess would be somewhere between 4-8MB, depending on if you used Flex or not.
I'm working on an ipad application for enterprise distribution (that will be used only by my company people)
It has many video files, images, pdf's etc. after making the app, the size of the ipa is around 2.2 GB.
I'd like to know whether the app will run effectively on all iPad's or will it be trouble to do so?
Looking forward for some solution where it won't effect the performance of the app
If you stay under 2GB, it should definitely work for all devices, since the maximum limit of an app on the AppStore is 2GB.
Since you you distribute internally, it should theoretically also work with a larger file, like 2.2GB as you mention.
Most iPads should have FAT32 file system (or better) which sets the physical limit to 4GB. However I don't know if there exist iPads with a FAT16 file system, if it does, their limit is 2GB!
However, I would not recommend having such a large app bundle. Instead I would use a small app bundle and let the users download the content from inside the application from a company server.
If you need to have offline support, you could provide bundles or packages for the users to download into their apps, and save them there (preferably smaller than 2 gb each).
There are many good reasons for this:
What if you need to release an update for your app? Do your really want to force your users to download a new 2GB bundle just for an upgrade?
What if you want to add more content? Wouldn't it be better if the users could download this from inside the app?
You can let your users download the content in steps (an app bundle needs to be downloaded completely at once)
Let your users choose what content they need to download
Let your users use the app while content is being downloaded
and more...
I'd recommend pulling what you need from your servers when it's needed, (since I assume most of these files currently reside on your servers anyway), then discarding it when you don't need it.
I wouldn't include anything in the build of your app that can be included at a later time.
The zip file I uploaded is 19.5MB, but on the App Store, Apple reports it as 24.5MB -- too large for over-the-air downloading. Is Apple adding a 5MB wrapper? Decompressing and recompressing less efficiently? Using 815K "megabytes"?
From Apple:
When your application is approved by
Apple to sell on the App Store, it is
encrypted for DRM purposes and
re-compressed. When the encryption is
added, the size of the compressed file
will increase. The exact size of the
increase will vary from app to app,
however, the size increase can be
large when the binary contains a lot
of contiguous zeros. We are unable to
guarantee the size of your file after
the encryption has been added.
Source (Expand section View the file sizes of a build (iOS, tvOS))
Download the app from the App Store with iTunes. You should end up with a .ipa in ~/Music/iTunes/Mobile Applications which is (hopefully) approximately what you get from the App Store. Check its size. You can additionally use something like unzip -Z myapp.zip to check the compressed size of individual files (an .ipa is just a .zip).
If, as in FreeAsInBeer's answer, your executable's compressed size is increasing loads, then it might be worthwhile trying to fix this (5 MB is a lot of code). Compiling with -Os might be helpful.
Also note that the .ipa will have some additional info, namely iTunesArtwork (from the up-to-512x512 App Store app icon) and iTunesMetadata.plist (which has stuff like the App Store category) and some FairPlay information. I'm not sure which of these are sent to the device.
And finally, Apple might be using M = 106 instead of 220 — 19.5×220 ≈ 20.4×106 . IIRC this was one of the changes in Snow Leopard.