React Native: Generate .apk and .ipa using Expo

Viewed 127029

I'm trying to generate a .ipa and a .apk file for my React Native app using Expo & Create React Native App. I successfully built the app and was able to get it to run on both an iOS & an Android device thanks to the docs: https://docs.expo.io/versions/v16.0.0/guides/building-standalone-apps.html

When the build is over, my console shows something like

Your URL is https://exp.host/@myname/myapp

I then open exp.host/@myname/myapp on my device and the app shows up via the Expo client.

But at point 4 of the docs, it is said that

When it’s done, you’ll see the url of a .apk (Android) or .ipa (iOS) file — this is your app.

I'm a bit confused. No where in the process do I see any ipa or apk file generated anywhere on my pc. Am I missing something ? How do I actually generate the files ?

8 Answers

make sure in app.json

{
  "expo": {
    "name": "your app name",
    "description": "your app desc",
    ....,
    "ios": {
      "supportsTablet": true
    },
    
    "android": {
      "package": "com.yourcompany.yourappname"
    }
  }
}

then run expo build:android or expo ba

after that

run expo build:status you'll find, something like this, the Apk's is hosted on amazon aws

[exp] Android:
[exp] APK: https://HOST/yourapp.apk
  • use `expo build:android` for android
  • use `expo build:ios` for ios

it will ask to create new account if you don't have an expo account expo build:status to know status of your app & the queued app may take around 30 mins to generate apk file .
you can find it in expo website

how to generate apk/ios file from expo

As per https://docs.expo.dev/classic/building-standalone-apps/: "The Classic Build service (expo build:{android,ios}) is in maintenance mode and has been superseded by EAS Build. SDK 46 will be the last SDK supported by Classic Builds and the Classic Build service will stop running for all SDK versions after January 4, 2023.", the new commands are:

  • eas build --platform android for Android
  • eas build --platform ios for iOS
  • eas build --platform all for both

More information: https://docs.expo.dev/build/setup/.

Update For the Latest Version of expo:
Expo will soon deprecate expo build and has encouraged using eas build, which builds to app bundle by default. To build to apk, modify the eas.json file accordingly as given here in expo docs. You will ofcourse have to install eas separately as it doesn't come bundled with expo-cli.

For apk add eas.json as:

{
  "build": {
    "preview": {
      "android": {
        "buildType": "apk"
      }
    },
    "preview2": {
      "android": {
        "gradleCommand": ":app:assembleRelease"
      }
    },
    "preview3": {
      "developmentClient": true
    },
    "production": {}
  }
}

and then run eas build -p android --profile preview

This command will work

eas build -p android --profile preview

Related