Publishing your first app built using Expo to Android Play Store and iOS App Store without using a Mac hardware

This sounds like what a lot of beginner developers need right now. You make an app and you want it to be available to users instantly without having to distribute using pesky installation files or google drive links. Also, when you start out on Expo, you hear a lot of 'cross-platform' keywords being thrown around, and that's what brought you to Expo in the first place. Now that you're ready to start sharing, you need help publishing it to the stores and making it instantly ready, so you can focus on other things such as marketing, testing, feature upgrade and so on.

This guide attempts to piece together what you'd need to for publishing your app to both android and ios store. And yes, you don't necessarily need a MacOS hardware for publishing to iOS App store.

Once you're ready with making all changes, you're ready to build the production version.

Pre-requisites

Firstly, update the version code in your app.json file. This is done so that each time you upload it, you use a different version code. It's not important to update version code every time you build a production version, but you need it for upload process. Make sure you commit and push your changes to git. I use private repos on Github to host my codebase. This makes my life easier when building for iOS, as you will see later.

Android

  • Once you've followed the above step, open your command line (I use bash) and run expo build:android -t --app-bundle
  • Follow the on-screen steps, and it should prompt that the build is now queued. Build queues can take anywhere from few minutes to few hours. It's not required to keep the window open as the Expo build server's has already queued your build request. You can come back to it from https://expo.io/dashboard and check if it has completed building.
  • Once complete, download the build to your PC. This is the file you upload to play store for distributing to users. Navigate to https://play.google.com/apps/publish/ and Click on Create Application. 
  • Follow this awesome guide from Google Support on the rest of the process for completing the upload to play store.
It takes few minutes to process the build after you release a version, so be sure you have some wait time before you can access your app from the play store.

iOS

For iOS, App store wants you to use Xcode to build your .ipa file. This file is similar to the apk or aab android bundle that you upload to the app store. It uses digital signature from Xcode to track the builds so running expo build:ios on non-mac platform doesn't work. If you own a MacOS already, that's great, but if not then there is an alternate solution, called Hackintosh.

  • Install Hackintosh. Hackintosh is a virtualized build of MacOS that can be run on any non-apple platforms that support virtual machines. It means you can download a VM software such as Oracle VirtualBox or VMware player to your PC and run Hackintosh from it. The community backing Hackintosh project is constantly coming up with new builds so visit this page for future updates. My current setup was built using this guide. Once you complete installation and boot the VM successfully, you now have a MacOS running on your windows system, and are ready to continue to next step.
  • Open safari browser from your new MacOS machine and go to this page to download Xcode. You can also follow this guide by freecodecamp here and follow the manual process. While it is downloading, proceed to next step.
  • Open terminal and type xcode-select --install to install required dev tools (such as git). 
  • Download Node.js and npm for your new machine. Find out more here.
  • Download the expo cli tool using npm install expo-cli --global.
  • Create and clone a repo that you used previously to commit all your changes. This repo will have the latest code that you pushed from your actual dev machine.
  • Run npm install first, and then after it's done run npm start.
  • Open a new command line and navigate to the same code directory and run npm build:ios.
  • It will now prompt you to enter your apple developer account username and password. Once it authenticates successfully, it will then queue the build file to expo server as same as for Android. In my experience, iOS builds are usually quicker than Android, but it all depends on how many build requests the server is handling at the moment.
  • Once the build completes, you'll be given a URL from which you can download the ipa file.
  • Navigate to the location where you downloaded the ipa file(usually Downloads) and run the following :

xcrun altool --upload-app -f <ipa file including extension> -u <app store e-mail account> --verbose

  • You'll be prompted to enter the password, after which it takes a couple of minutes to upload the ipa file depending on the file size. You will only get success or failure message at the end so be patient if you do not see any information.
  • After it's done, you will be able to see a new version being processed in the app store connect page. After it completes processing, it's going to warn you about missing compliance information. This is normal because we didn't actually use Xcode to build our ipa file. Go ahead and fill the compliance form and your app will be ready for production or beta release.

And that is how you can make your app available to users. There are of course, other things to look out for, such as logos, screenshots, and OS permissions that your app needs. You also have to closely adhere to design guidelines and other restrictions before they finally approve your app. But for the most part, your app should be now live and ready to share with anyone.

Comments

  1. Very informative article, You explain all aspects of topic and guied your reader precisely. Check out the classified platform to visit تحميل شير ات 2022

    ReplyDelete
  2. I admire this article for the well-researched content and excellent wording. Read more info about Grocery App Development Services In Dubai. I got so involved in this material that I couldn’t stop reading. I am impressed with your work and skill. Thank you so much.

    ReplyDelete
  3. All the games you can play on the Sega Genesis - AprCasino
    The best casino-roll.com part is, apr casino of course, the game, is that there are very few people who do a https://febcasino.com/review/merit-casino/ lot of novcasino the hard work. The best part is, worrione.com if the

    ReplyDelete

Post a Comment

Popular posts from this blog

Youtube not working in Vianet NetTV? Here's how you can fix it

Building a news app in react-native using Expo and Express on the Node.js server

Web scraping using BeautifulSoup in Python : EAN number vs price from a German e-commerce website