Build Size is Different - ios

I have Create Build with development Certificate the App Size is 10 MB, But i have create build for distribution certificate for uploading to App Store the App Size is 99 MB.

It's not surprising that the distribution version is larger than the development version. When you build an app for a specific device during development, Xcode only needs to compile a binary for one processor, and it only needs to include the resources that would be used on that device. When you build for distribution, Xcode builds a fat binary that includes slices for every processor. The uploaded package also has to include versions of each image resource at all the resolutions that might be used on any device. The result is an application archive that includes a lot more than what's needed for any single device.
The fact that the package you upload to the App Store is large doesn't mean that the app that your users eventually download will be as large, though. The App Store will use app thinning to deliver only those components that are needed to each device.

Related

Why is the same app different sizes on different devices

I released my first app in the AppStore right before Apple's holiday break. On the iPhone the size of app listed in the App Store is 15MB. However, the exact same app on iPad is 28.8MB according to AppStore page.
Why is there a the huge size difference if both the apps have everything the same?
Do they? I do not think so.
Apple sends only the images along with the app file that the particular devices needs. The non-retina devices will have really tiny size while the app for the iPhone 6S Plus will be a lot larger.
The term used for that procedure is App Thinning. What I mentioned regarding the images is a part of that and called Slicing
Apple has introduced a concept called App Thinning with iOS 9. It contains three strategies to reduce the download size of you App:
Slicing: In short only the images and resources needed for a specific target device are delivered. If someone downloads the App with iOS 8 or earlier, the full package will be downloaded
Slicing is the process of creating and delivering variants of the app bundle for different target devices. A variant contains only the executable architecture and resources that are needed for the target device
Bitcode: If active, Apple can optimise your code for a specific device. For example deploy with 32 or 64 Bit compiled code
On demand data sources: Must be used explicitely by you

About xcode assets catalog and app size

I'm wondering if having images for all kind of devices in the assets catalog will make the app bundle size larger on the user's end.
Is the ipa file downloaded with all images in the assets catalog, or just with those specific to the device the app is being downloaded to?
As from iOS 9 and later, only those assets are downloaded with the app which are compatible with the device.
It is mentioned in this link here
Sliced apps are supported on devices running 9.0 and later; otherwise,
the store delivers universal apps to customers.
Apple has a feature called "App thinning" which is designed to combat this. Basically unused assets are stripped out based on device configuration.
The store will create and deliver different variants based on the
devices your app supports. Image resources are sliced according to
their resolution and device family. GPU resources are sliced according
to device capabilities.
Apple's App Thinning Docs

ENABLE_BITCODE in xcode 7 should provide all image sizes for XCode?

I am using some images with only 1x and use it for all sizes and some images are only 2x ,
Now by enabling the bitcode flag in Xcode should regenerate all images with three sizes?
also the splash screens and icons should i added it to the image asset catalogs or the keep it on the project as files does this affect the app size?
Firstly, Bitcode is a total different concept which generates intermediate representation of a compiled program. This SO thread beautifully explains about it.
I believe you are looking for Slicing. Per Apple Documentation:
Slicing is the process of creating and delivering variants of the app
bundle for different target devices. A variant contains only the
executable architecture and resources that are needed for the target
device. You continue to develop and upload full versions of your app
to iTunes Connect. The App Store will create and deliver different
variants based on the devices your app supports. Image resources are
sliced according to their resolution and device family. GPU resources
are sliced according to device capabilities. When the user installs an
app, a variant for the user’s device is downloaded and installed.
Trusting you are talking about Slicing:
In Xcode, specify target devices and provide multiple resolutions of
images in the asset catalog.
So you should provide all target device images in asset catalog for slicing to work effectively.

Does the App Store remove architectures from an IPA?

Since the announcement by Apple that all apps distributed by the App Store require 64-bit support, I've had to build multiple-architecture fat binaries that increase the size of the resulting IPA. Does this size increase directly affect my users, or does the App Store strip out irrelevant architectures from an IPA containing fat binaries when downloading to a device?
It does not appear that they currently do, since that feature was announced for iOS 9.
Slicing is the process of creating and delivering variants of the app
bundle for different target devices. A variant contains only the
executable architecture and resources that are needed for the target
device. You continue to develop and upload full versions of your app
to iTunes Connect. The App Store will create and deliver different
variants based on the devices your app supports.

What is the difference betwen .ipa and .app format in iOS?

I tried Adobe flash professional CS5 based to develop an iPhone application in windowsOS but when I publish it's out will be .ipa format. Will this work properly for an iPhone?
Can anyone explain .ipa and .app?
And also is it possible to develop an iPhone application in Adobe flash professional CS5 and how can we get .app format ?
Disclaimer: my answer comes completely from digging around the files themselves.
.apps are application bundles. They contain the executable file, an Info.plist file, an icon, a launch image, and some other application resources. Application bundles are the only ones that actually get installed onto your device.
.ipas are archives that contain .app bundles as well as some other files meant only for iTunes to use, for instance iTunesArtwork. They are how iTunes manages applications, and as far as I can tell have little to do with the applications themselves other than App Store information.
I haven't worked with Flash CS5's export to iPhone feature, but you should be able to just drag your .ipa file to iTunes and it'll appear in the Apps list.
And also is it possible to develop iphone application in Adobe flash professional cs5?
It is possible in the sense that your iPhone software won't crash permanently or something, but as phwd and David have said, your app will not make it to the App Store.
iOS app formats
iOS supports next app formats:
.deb - Debian package. Since iOS is based on Darwin (BSD) Unix family it is *possible to run such Linux format. For example Cydia package manager uses .deb for sharing applications on jailbroked devices.
.app - during development when you build your application for simulator or real device the .app is generated. You can find it in Products group. Sometimes .app is used to share application thought iOS simulators[About]
.ipa - iOS App Store Package for iOS devices. When you publish/distribute or download an app using App Store your operates .ipa files. This container includes .app and other metadata. Actially it is an archive with .app. And to create it you should Product -> Archive -> ...

Resources