XCode vs Android Studio: Which is better?
Tags: android, ios, discuss, codequality
Published: 2021-04-20 05:04:44

<!-- wp:heading -->
<h2>What makes me eligible to review!</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>I have been in the industry for more than 11+ years now. I started my career with BlackBerry (BB) Development. I feel old already!</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong><em>Eclipse</em></strong> was our best friend back then for mobile development. I did my internship working on the famous <a href="https://zagat.com/" target="_blank" rel="noreferrer noopener">Zagat</a> app for BlackBerry. It was overall a great learning experience.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>For my full-time job I switched to a start up named <a href="https://www.linkedin.com/company/spinlet/" target="_blank" rel="noreferrer noopener">Spinlet</a> which I hope is still going strong. I worked as BlackBerry developer in the beginning but switched to iOS development eventually.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>My iOS experience was nothing but exciting in those initial years. Eventually I started my own firm <a href="https://royalecheese.com" target="_blank" rel="noreferrer noopener">Royale Cheese</a> with a friend that provides mobile design &amp; development. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>After around 4 years of iOS development I found my way into Android development. I have got a fair share of experience with Android development as well, around 3 years to be precise.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We have since then been working on full stack. That's when I realised how horrible the mobile development tools are.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Enough with the chit chat. Here's an honest review of the mobile development tools and technologies. </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>XCode</h2>
<!-- /wp:heading -->

<!-- wp:image {"id":488,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://arjavdave.com/wp-content/uploads/2021/04/xcode.png" alt="" class="wp-image-488"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>It used to be a good tool in the past. But it has become terrible lately. Here is a list of all the issues even after 15 years:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><li><strong>Auto-completion</strong>: Firstly, who in the right mind would set Esc as the suggestions key. Secondly, the autocompletion doesn't work many a times or gives weird suggestions that are out of context. </li><li><strong>Build Times</strong>: It takes a lot of time to create an archive or to run on a device for the first time. It's best to <a href="https://arjavdave.com/2021/03/11/continuous-integration-cicd-for-ios-on-azure-devops-part-1/" target="_blank" rel="noreferrer noopener">setup a CI/CD</a> to archive and upload builds. </li><li><strong>Signing &amp; Deployment:</strong> With the latest version's it's getting easier. But, it's still confusing with the signing certificates and the provision profiles for someone who is a beginner.</li><li><strong>Memory Hog</strong>: Somehow XCode keeps on hogging memory. For every new device on which the build needs to run it occupies 3 GB. Archives take a huge chunk and so as the simulators. Overall it occupies around 50GB if I don't clean up regularly.</li><li><strong>Updates</strong>: Each update is around 10-12GB even the minor upgrades. What's worse is it requires more than 40GB of free space to get installed. Last but not the least, XCode takes around 12GB of the space.</li><li><strong>Design</strong>: Initially to design UI there was struts &amp; springs, then came the Autolayout and now the SwiftUI. It is worrisome that the methodology keeps on changing.</li><li><strong>Cocoapods</strong>: is getting worse day by day because it's repo is getting so big. Secondly, it increases the build times by a lot.</li><li><strong>Camera</strong>: Possibly due to hardware limitations camera was not supported in simulators. But, now it's been a while. If the location can be simulated why not the Camera?</li></ul>
<!-- /wp:list -->

<!-- wp:heading -->
<h2>Android Studio</h2>
<!-- /wp:heading -->

<!-- wp:image {"id":489,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://arjavdave.com/wp-content/uploads/2021/04/android-studio.png" alt="" class="wp-image-489"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>I haven't got the chance to use it in the early days. But from what I have been seeing it wouldn't have been pretty. Here are some of the frustrating issues:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><li><strong>Fragmentation</strong>: I feel this might be on top of every ones list. Supporting the staggering amount of devices to support might just overwhelm anyone.</li><li><strong>Gradle</strong>: Oh My God! Gradle takes forever to run builds. There are optimisation's which can help alleviate the problem, but it still remains the problem.</li><li><strong>RAM Hogger</strong>: With emulators and IDE running together, the combo requires around 10-12GB of RAM. That's way more than what their official documentation says: <strong><em>4GB</em></strong>.</li><li><strong>Signing Keys</strong>: You lose your signing keys and you can't upload to the same app again. You will have to create a new app and get the reviews and downloads again. There is some improvement in this area recently.</li><li><strong>IDE: </strong>I always felt Java based IDE's to be clumsy. That includes IntelliJ (on which Android Studio is based), Eclipse or NetBeans. It's responsiveness is not like other tools like XCode or VS Code.</li></ul>
<!-- /wp:list -->

<!-- wp:heading -->
<h2>XCode vs Android Studio Review</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Even though it might feel Android has less issues it does have some serious issues. <strong>Fragmentation</strong> and <strong>Gradle</strong> might alone be enough to make Android look bad. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Personally I prefer to work in XCode compared to Android since I own a Mac and probably I am more used to it. </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Conclusion</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Overall both platforms have a huge user base. But, I feel that these tools still have a long way to go. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>As an example I am absolutely in love how Microsoft has revamped dotnet to <a href="https://dotnet.microsoft.com/download" target="_blank" rel="noreferrer noopener">dotnet core</a> and their IDE to <a href="https://code.visualstudio.com/" target="_blank" rel="noreferrer noopener">VS Code</a>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Jot down your frustrations in the comments below. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Read some of my articles here:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><li><a href="https://arjavdave.com/2021/03/11/continuous-integration-cicd-for-ios-on-azure-devops-part-1/" target="_blank" rel="noreferrer noopener">Setup CI-CD for iOS</a></li><li><a href="https://arjavdave.com/2021/03/16/how-to-setup-ci-cd-pipelines-for-android-with-azure-devops/" target="_blank" rel="noreferrer noopener">Setup CI-CD for Android</a></li><li><a href="https://arjavdave.com/2021/04/14/learn-test-driven-development-with-integration-tests-in-net-5-0/" target="_blank" rel="noreferrer noopener">Learning Integration Tests in .NET with .TDD</a></li><li><a href="https://arjavdave.com/2021/04/05/going-password-less-with-dotnet/" target="_blank" rel="noreferrer noopener">Provide a password-less to login</a></li></ul>
<!-- /wp:list -->