File format for submitting iPhone app in App Store - ios4

When I am building my app,Xcode generates it in .app format. Usually when I install app from AppStore they are in .ipa format. How does this format get generated? Will it be done by guys at AppStore while reviewing app or what? In which format should I compress my .app file?
Thanks

An .ipa file is simply a zipped archive of a .app bundle. Previously, you would simply zip up the compiled application bundle (by right-clicking on it and choosing Compress "xxx.app") before submission, but newer versions of Xcode now do this for you with their Build and Archive or Archive options.
In fact, you might be able to learn things by unzipping other application .ipa files you get via the App Store and inspecting their contents (like Info.plist settings or bundled resources). I know I have.

Related

Convert from .ZIP to .IPA

I have recently had a view of inside an IPA file from an app off the App Store and tweaked it slightly (nothing major).
I did this by converting the .IPA file to a .ZIP and then extracting that. When I do it in complete reverse (compress the folder to ZIP then change the file extension to .IPA), I can’t load it on to my phone and the apparent issue/error is:
This file doesn’t seem to be a valid app or has been tampered with
I tried another IPA and did the exact same thing without modifying any of the files inside and it still came up with the same error.
How can I convert an IPA file to a ZIP file and vice versa without damaging the file to where it can be accepted to load on the phone (I'm using a Mac)
I managed to add a file into the .IPA file by loading the .IPA file into WINRAR and importing a file into it that way. I then uploaded the file using 3uTools and it loaded perfectly onto my iPhone.

How do you make Android Studio automatically include the proguard mapping file in a signed bundle?

I recently switched to uploading bundles instead of .apk files to Google Play. I'd like to include the mapping.txt file in the bundle automatically so I don't have to keep uploading them separately every time. It appears that this can be done automatically (search this page for "ProGuard") but I couldn't find instructions.
The process is indeed automaticallly done, you do not need to upload the mapping file separately.
AndroidStudio puts the mapping file in your bundle's BUNDLE-METADATA/com.android.tools.obfuscation folder. After generating the bundle there should be a proguard.map file inside.

Automatically upload ProGuard mapping files to play console

Is pretty annoying to upload the ProGuard mapping files to google play console everytime i need to build a new version of my apk (my gradle build generate 4 different apks for every release so i do need to upload 4 different mapping files)
I was wondering if is possible to make this process automatically then i found this article
https://developers.google.com/android-publisher/api-ref/edits/deobfuscationfiles/upload
So google does have an api to upload the mapping files, is there any gradle plugin to work with? is there any easy way to integrate?
Suggestion: If you publish an Android App Bundle instead of APKs, the deobfuscation mapping file will be uploaded automatically with your artifact so you don't have to do it separately.
For the curious, the mapping file is located at BUNDLE-METADATA/com.android.tools.build.obfuscation/proguard.map in AAB (which is, like the APK format, just a ZIP file).
you can write a gradle build script to run tasks after build complees
and then you can use something like this file upload plugin to upload the file to the url
when you have Crashlytics set up, this is being explained here. there's also a Play Publisher Plugin for Gradle, while it does no seem to upload the mapping.txt. if you want to use that API, it should be easy to extend eg. the Google Cloud PHP Client with another API endpoint.

Distribute MonoTouch app to testers using Organizer?

I am trying to archive my MonoTouch app and to supply it to our testers using Apple's/Xcode's organizer.
Can somebody tell me how to do that? In ObjC projects I can archive an application. But how can I achieve the same in MT/MonoDevelop?
My starting point was this documentation:
http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iphone_development/145-Distributing_Applications/distributing_applications.html
René
The archive that Xcode provides is in the form of an .ipa file. This is a glorified zip file with a certain expected file structure.
The .ipa is made up of the following components:
A folder named "Payload", which contains the compiled
(release/iPhone) .app
a 57x57 .png icon file (which is displayed while the app is being
downloaded)
a 512x512 .png file of the icon once again - however this has to
renamed itunesartwork with no extension
iTunesMetadata.plist - this contains information about the app,
such as copyright name, genre, itemname, softwareIconNeedsShine (you
can google what information this needs).
The way I package up our .ipa, is I have a folder called "App Packaging" which has all of these components already in, and I simply update the .app file whenever we do an upload, "Compress..." then rename the file to x.ipa (OS X will ask if you want to use this extension, make sure you select ("use .ipa" !).
You can then send the file to the testers to install via itunes. If the testers are all testing on devices that are iOS 4.0+ then it is possible to distribute this over the air as well but I can go into that only if you would like me to?
EDIT - Over the air distribution
It is possible to do over the air distribution of apps as well. We use it for distribution of an enterprise app we develop but it is possible to use it for testing purposes as well. It should be noted here that in order for the app to installed, the device needs to be included in the provisioning profile you signed the app with (but you knew that already!).
In order to do over the air, you need 3 things:
the .ipa file we created earlier.
a 57x57 .png icon file (same as the one included in the .ipa preferably)
a file called "Manifest.plist"
The Manifest plist contains the following structure/information:
You'll then want to upload all of these files to your website/intranet etc. In order to download the app, you'll need to create a page that points to the Manifest.plist file and then then iOS takes care of the rest and downloads the app from the location specified in the manifest.
There is now a much much easier way. On the Project menu in MonoDevelop, choose Publish to TestFlight.
You'll need a free TestFlightApp.com account, but it works great!

MonoTouch Enterprise - Deployment

Our firm has begun building MonoTouch iPad/iPhone apps for enterprise deployment.
How do I take the app and create a *.ipa file for upload to our MDM server?
An .ipa file is basically a glorified .zip file. There are a couple of routes you can go down:
Export the project to xcode and under "Build" click "Build and Archive" - fill in the appropriate details and the project should create the .ipa for you as expected.
If this isn't an option, (which it isnt for us, so this is the method I've used, to great success) you can simply create all the components that go into the .ipa and right-click, "Compress..." in Finder.
The .ipa is made up of the following components:
A folder named "Payload", which contains the compiled (release/iPhone) .app
a 57x57 .png icon file (which is displayed while the app is being downloaded)
a 512x512 .png file of the icon once again - however this has to renamed itunesartwork with no extension
iTunesMetadata.plist - this contains information about the app, such as copyright name, genre, itemname, softwareIconNeedsShine (you can google what information this needs).
The way I package up our .ipa, is I have a folder called "App Packaging" which has all of these components already in, and I simply update the .app file whenever we do an upload, "Compress..." then rename the file to x.ipa (OS X will ask if you want to use this extension, make sure you select ("use .ipa" !).
With the current Monodevelop (2.8.6.5) and Monotouch (5.2.5) it is as easy as right clicking on your project -> options -> iPhone IPA Options -> check Build ad-hoc/enterprise package (IPA) for the desired configuration.
We created a special configuration called Distribution which builds using the Distribution Certificate and In House Distribution Profile.
Luke, I like your answer and have given you the credit. I am adding some more details for my own, and others, notes.
Use SpotLight to find one of your own MonoTouch apps. Search on ".ipa".
Rename it to SomeThing.Zip
Unzip it.
You can then use the structure of the unzipped folder to edit then rezip.
Just another way to get an IPA that made it easy for me, drag your .app file onto your itunes library and sync your device. ITunes then creates a copy of the app as an .ipa file in the user/music/itunes/itunes media/mobile applications. This can then be distributed much easier than the .app file.

Resources