How to deploy Xamarin iOS App with .dSYM file - ios

I've been looking at Microsoft's docs for deploying Xamarin iOS apps to the app store:
https://learn.microsoft.com/en-us/xamarin/ios/deploy-test/app-distribution/app-store-distribution/index?tabs=windows
https://learn.microsoft.com/en-us/xamarin/ios/deploy-test/app-distribution/ipa-support?tabs=windows
We are currently building in Ad-Hoc and generating an .ipa file which we then upload to the app store via Application Loader. I managed to get the .dSYM folder to generate if I set the Project Properties -> Build -> Advanced -> Debugging Information to "Full" in Visual Studio.
Is there a better way to upload the .ipa, or a way to upload the .dSYM to iTunes Connect? As I read that Apple will automatically symbolicate any crash logs for you if the symbols were uploaded with the app?
Also, does setting the Debugging Information to "Full" change the actual .ipa in any way, or does it just generate the extra .dSYM file? Since setting it to "Full" I manually deployed the .ipa to our test device and one the libraries we use is now throwing an Object Reference exception.
Any help is greatly appreciated, thanks.

Is there a better way to upload the .ipa?
In my knowledge, there are two ways to upload .ipa file to iTunes Connect. One is XCode and the other is Application Loader.
or a way to upload the .dSYM to iTunes Connect? As I read that Apple
will automatically symbolicate any crash logs for you if the symbols
were uploaded with the app?
"you will be given the option of including the dSYM file when uploading your archive to iTunes Connect. In the submission dialog, check “Include app symbols for your application… DSYM files store the debug symbols for your app, it should exist at the machine that compiled the app binary. Read the answer in this thread would help you understand what is a DSYM file better.
Here is the document about Understanding and Analyzing Application Crash Reports.
or does it just generate the extra .dSYM file?
I don't think so, there is only a DSYM file after you compiled the app binary.
Since setting it to "Full" I manually deployed the .ipa to our test
device and one the libraries we use is now throwing an Object
Reference exception.
What is the Object Reference exception? Any stackTrace?

Related

Difference between appName.app and appName.app.dsYM file of iOS

Can anyone explain to me what is the difference between appName.app and appName.app.dsYM file and which file submit on the AppStore?
As I am checking it in my finder both file has a different size so I am confused which one will be used by Apple?
Thank you.
.app file is an iOS application and .dSYM is debug symbol file which is used to trace the crash log and used to convert the crash log to human readable form.
You need to submit .ipa file to App Store.
For that you need to do following....
Select "Generic iOS Device"
Change the app version or build number, if required
Go to Product -> Archive
Once successfully archived you will see the organiser window. You will see the Archive list.
You need to select the archive that you have just done.(by default it will be selected)
If you want upload iOS app directly via XCODE then select Distribute App -> App Store Connect-> Upload. and follow the instruction. The app will be uploaded on App Store connect.
If you want to manually upload app (like using Transporter App, etc.) the you need to select Distribute App -> App Store Connect-> Export option. The .ipa file will be exported after successful validation pass. That .ipa file you need to upload to App Store Connect.

Is that safe to share .xcarchive?

I`m somehow amateur in Xcode and this matter is so important for me.
My Friend use his developer id to publish my app and he ask me to give him .xcarchive instead *.ipa file
As I read in stackoverflow topics .xcarchive have the same content of ipa and there is no concern about lose and steal source code.
But when I check my xcarchive and use show content option I see most of project files like images and sources in application folder , also some of my code are in *.nib files
Is that normal ? and if I extract ipa if I get the same result ?
Is there any security or tips in Xcode that better to active before archive project ?
It is normal. In order to publish your app, your friend really needs the xcarchive, because they need to export an IPA file with the appropriate provisioning profile and signed with their code signing identity. Although it's possible to replace the provisioning profile in an IPA file and re-sign it again, it's a daunting task you don't want any of your friends to do. If you trust your friend with publishing your app, you should trust them and share the xcarchive.
When you compare the contents of xcarchive and IPA files, you can see xcarchive contains a dSYMs folder with dSYM files used to desymbolicate your crash logs -- the developer needs that to know in what file and at what line number the application crashed.

How to get the dSYM file from the ipa file available on App Store

There is a way to get a dSYM file from the ipa file that is available in App Store?
I've lost my archives that had that dSYM particularly.
Can I do that? I need the dSYM to upload to Crittercism.
Thanks in advance.
Assuming you still have access to the app in iTunes Connect, it's now possible to download the dSYM from iTunes Connect, too. Login, go to My Apps, select your app, then tap on the Activity tab at the top. Tap on the relevant build, and, assuming the app was submitted with symbols in the first place, you should see the option to "Download dSYM."
The file you get is called dSYMs (without an extension) but it is in fact a zip file. Add the .zip extension, unzip, and you'll find your dSYM(s) inside.
(I needed to do this this week since Crashlytics was complaining about a missing dSYM: https://stackoverflow.com/a/35374388/2397068.)
Unfortunately, the dSYM is included within the app archive but not within the .ipa file, so it is not possible to get it from downloading the app from the App Store.
This is for security reasons too- having the dSYM within the .ipa file would mean anyone could download it, potentially making it easier to hack/crack/reverse engineer your app.

ios - what is the difference between archiving your application and creating a binary?

I have started the steps to submit my app to the apple store, andI have made a keychain security file, and did an archive of the code base.
But as I understand it, I have to make a binary file of the code base which is just a zip file, and upload it to iTunes Connect, is that correct?
What was the point of archiving the codebase? Did that not create the binary? And how do I sign the binary correctly so that it can be submitted to the apple store?
Thanks!!
You're using a number of terms here, but not using all of them correctly.
"Code base" usually refers to the entire collection of files that are part of the application. The most important of those are the source code files, but most people would also include such things as XML files, strings files, images, your project file, and other resources. An "archive of the code base" sounds like your put all these in a zip file for safe keeping. I understand you to mean that you used Xcode's 'Archive' command, but this does several things:
compiles the program into an application bundle (the app bundle is a directory that includes the executable "binary" file, but also contains the other resources that the app needs)
signs the bundle with your private key and distribution provision
zips the application
saves the archive along with the debug symbols file in Xcode's organizer so that you can later symbolicate any crash logs you receive
optionally submits the application to iTunesConnect for review, save the app, or mail the app to someone
"creating a binary" really just means creating some sort of binary (i.e. non-text) file, but it's often understood that the binary file in question is executable. So yes, using Xcode's 'Archive' command will "create a binary", but it goes several steps further in ensuring that the 'binary' is stored in the right format for submitting to iTunesConnect or distributing to users.
Creating an archive also saves the .dsym files which you need to symbolicate crash reports.
See this article for more about archiving: http://developer.apple.com/library/ios/#qa/qa1764/_index.html
You can use Xcode to submit your binary to iTunes connect. Also, binaries are already signed with the provisioning/distribution profile.
In order to sign the binary correctly, you need to create a distribution profile with the app id you have assigned to your application. You compile your app and make an archive. You can go to Xcode's organizer to submit your application to the app store.

Bundling app for app store distribution in Xcode 4.3

I can't believe how difficult it is to figure out the final process for building an app and getting it into the app store.
I've already prepped iTunes Connect with my app and it shows up in Application Loader.
I finally figured out how to "archive" the app, although none of the guides I found, including Apple's, seemed to really describe this process in complete detail.
Now I've got a .xcarchive package. For some reason, Application Loader will not let me select that kind of file. I read somewhere about needing to archive as a .zip file, so I tried that. Now Application Loader allows me to select the file, but after I click Send, it gives me this error:
"The application wrapper must end in .app."
What exactly is the process of archiving from Xcode 4.3 and getting the application uploaded into the app store?
In the XCode Organizer, does the 'Archives' tab allow ou to 'Distribute'? You should then have the option to 'Submit to the iOS App Store'.
This is described in more detail in Distributing Your iOS App.
The submission process doesn't get a lot of description because, when it works, it's quite simple. You never need to manually locate the '.xcarchive' package or '.ipa' file for your app store submission, only for testing or backups outside the app store. (You do need the archive package, but it's just quietly created and then uploaded by XCode.)

Resources