Compared: Xamarin vs Xcode - iOS App Size and Startup Speed
In Xamarin I created a Single View App targeted for iOS and Android with a Shared Library. I changed the scheme to Release and removed the button click logic from ViewController.cs since Xcode's doesn't start with any button click logic. I confirmed that debugging was not enabled by putting a breakpoint in the ViewDidLoad() event, and it never hit that breakpoint. The deployment target was set to iOS 9.2.
In Xamarin I created a Xamarin.Forms App targeted for iOS and Android with a Shared Library. I changed the scheme to Release. I confirmed that debugging was not enabled by putting a breakpoint in the App() method, and it never hit that breakpoint. The deployment target was set to iOS 9.2.
In Xcode I created a Single View App using Swift targeting Universal devices. I opened the Run scheme, changed it to use the Build Configuration of Release and unchecked Debug Executable. Under Options I unchecked Core Location, XPC Services, View Debugging, and Queue Debugging. I also added a UIButton to Main.storyboard since Xamarin's starts out with a button on the storyboard. I confirmed that debugging was not enabled by putting a breakpoint in the viewDidLoad() event, and it never hit that breakpoint. The deployment target was set to iOS 9.2.
In Xcode I created a Single View App using Objective C targeting Universal devices. I opened the Run scheme, changed it to use the Build Configuration of Release and unchecked Debug Executable. Under Options I unchecked Core Location, XPC Services, View Debugging, and Queue Debugging. I also added a UIButton to Main.storyboard since Xamarin's starts out with a button on the storyboard. I confirmed that debugging was not enabled by putting a breakpoint in the viewDidLoad() event, and it never hit that breakpoint. The deployment target was set to iOS 9.2.
File Size on my iPhone 6 Plus running iOS 9.2.1 (13D15)
In Xamarin I created a Xamarin.Forms App targeted for iOS and Android with a Shared Library. I changed the scheme to Release. I confirmed that debugging was not enabled by putting a breakpoint in the App() method, and it never hit that breakpoint. The deployment target was set to iOS 9.2.
In Xcode I created a Single View App using Swift targeting Universal devices. I opened the Run scheme, changed it to use the Build Configuration of Release and unchecked Debug Executable. Under Options I unchecked Core Location, XPC Services, View Debugging, and Queue Debugging. I also added a UIButton to Main.storyboard since Xamarin's starts out with a button on the storyboard. I confirmed that debugging was not enabled by putting a breakpoint in the viewDidLoad() event, and it never hit that breakpoint. The deployment target was set to iOS 9.2.
In Xcode I created a Single View App using Objective C targeting Universal devices. I opened the Run scheme, changed it to use the Build Configuration of Release and unchecked Debug Executable. Under Options I unchecked Core Location, XPC Services, View Debugging, and Queue Debugging. I also added a UIButton to Main.storyboard since Xamarin's starts out with a button on the storyboard. I confirmed that debugging was not enabled by putting a breakpoint in the viewDidLoad() event, and it never hit that breakpoint. The deployment target was set to iOS 9.2.
File Size on my iPhone 6 Plus running iOS 9.2.1 (13D15)
- Xamarin Native: 8.6 MB
- Xamarin Forms: 32.9 MB
- Xcode Swift: 17.0 MB
- Xcode Objective C: 340 KB
Startup time before the main storyboard is displayed on my iPhone 6 Plus running iOS 9.2.1 (13D15)
- Xamarin Native: Less than 1 second (with a Xamarin branded launch screen before that)
- Xamarin Forms: Less than 1 second (with a Xamarin branded launch screen before that)
- Xcode Swift: Less than 1 second (with a blank white launch screen before that)
- Xcode Objective C: Less than 1 second (with a blank white launch screen before that)
I was using Xcode 7.2.1 (7C1002) and Xamarin 5.10.2 (build 56)
Comments