Introduction
Hey everyone! Here is a quick article on how to generate an apk for your react native expo app.
Install expo CLI
I assume, if you are reading a blog on exporting the app , you have already installed the expo CLI 👀.
To check if you have expo CLI install run
expo -V
In the command line, If you get a version number that indicates you have expo install.
In case you don't. You can install it using npm.
We also need the eas build tools
npm install --global expo-cli eas-cli
Create expo account and login
First requirement for generating the apk file is creating an expo account.
Create an account here
After logging in, you will be redirected to your expo dashboard.
Login to expo CLI
- Open cmd
- Login to expo account using the command :
expo login
To check which user you are logged in with, use the command
expo whoami
Edit Config
By default the eas build tool will give you a playstore build file.
If you want a .apk file you need to create a eas.json
file and add a buildType
as apk
.
{
"build": {
"preview": {
"android": {
"buildType": "apk"
}
},
"preview2": {
"android": {
"gradleCommand": ":app:assembleRelease"
}
},
"preview3": {
"developmentClient": true
},
"production": {}
}
}
You can check out more about the eas build tool here.
Build
Open cmd in your app directory.
Run the build command
eas build -p android --profile preview
Wait for the build to complete...
Download apk
After the build is complete you can go to the builds section in your dashboard and download the apk.
Hope you found this useful. See you in the next one!
Top comments (28)
Thanks man! Easy and simple.
Loved it! thank you.
Hey, Great post thanks for sharing!.
It's not working on EXPO version 45.0.0. you have to give another method to create apk using expo.
Updated the blog for the new method
Using EXPO 45 butt know 47verion how to create APK.
I believe this methods works with version 47
i am facing this issues or errors during follow these steps for generate apk using expo
can anyone help me for solve these problems during generate apk using expo in react native project
Running 'gradlew :app:assembleRelease' in /home/expo/workingdir/build/android
Downloading services.gradle.org/distributions/...
10%
20%.
30%.
40%.
50%.
60%.
70%.
80%.
90%.
100%
Welcome to Gradle 7.5.1!
Here are the highlights of this release:
Support for Java 18
Support for building with Groovy 4
Much more responsive continuous builds
Improved diagnostics for dependency resolution
For more details see docs.gradle.org/7.5.1/release-note...
To honour the JVM settings for this build a single-use Daemon process will be forked. See docs.gradle.org/7.5.1/userguide/gr....
Daemon will be stopped at the end of the build
[stderr]
FAILURE: Build failed with an exception.
[stderr]
[stderr]
Script '/home/expo/workingdir/build/node_modules/@react-native-community/cli-platform-android/native_modules.gradle' line: 250
[stderr]
[stderr]
A problem occurred evaluating script.
[stderr]
[stderr]
Calling
[node, /home/expo/workingdir/build/node_modules/@react-native-community/cli/build/bin.js, config]
finished with an exception. Error message: groovy.json.JsonException: Unable to determine the current character, it is not a string, number, array, or object[stderr]
[stderr]
The current character read is 'E' with an int value of 69
[stderr]
Unable to determine the current character, it is not a string, number, array, or object
[stderr]
line number 1
[stderr]
index number 0
[stderr]
Error: Package name not found in /home/expo/workingdir/build/android/app/src/main/AndroidManifest.xml at Object.projectConfig (/home/expo/workingdir/build/node_modules/@react-native-community/cli-platform-android/build/config/index.js:74:11) at Object.get project as project at filterConfig (/home/expo/workingdir/build/node_modules/@react-native-community/cli/build/commands/config/config.js:13:20) at Object.func (/home/expo/workingdir/build/node_modules/@react-native-community/cli/build/commands/config/config.js:27:32) at Command.handleAction (/home/expo/workingdir/build/node_modules/@react-native-community/cli/build/index.js:192:23) at Command.listener (/home/expo/workingdir/build/node_modules/@react-native-community/cli/node_modules/commander/index.js:315:8) at Command.emit (node:events:513:28) at Command.parseArgs (/home/expo/workingdir/build/node_modules/@react-native-community/cli/node_modules/commander/index.js:651:12) at Command.parse (/home/expo/workingdir/build/node_modules/@react-native-community/cli/node_modules/commander/index.js:474:21) at setupAndRun (/home/expo/workingdir/build/node_modules/@react-native-community/cli/build/index.js:271:24)info Run CLI with --verbose flag for more details.
[stderr]
^. Output: Error: Package name not found in /home/expo/workingdir/build/android/app/src/main/AndroidManifest.xml at Object.projectConfig (/home/expo/workingdir/build/node_modules/@react-native-community/cli-platform-android/build/config/index.js:74:11) at Object.get project as project at filterConfig (/home/expo/workingdir/build/node_modules/@react-native-community/cli/build/commands/config/config.js:13:20) at Object.func (/home/expo/workingdir/build/node_modules/@react-native-community/cli/build/commands/config/config.js:27:32) at Command.handleAction (/home/expo/workingdir/build/node_modules/@react-native-community/cli/build/index.js:192:23) at Command.listener (/home/expo/workingdir/build/node_modules/@react-native-community/cli/node_modules/commander/index.js:315:8) at Command.emit (node:events:513:28) at Command.parseArgs (/home/expo/workingdir/build/node_modules/@react-native-community/cli/node_modules/commander/index.js:651:12) at Command.parse (/home/expo/workingdir/build/node_modules/@react-native-community/cli/node_modules/commander/index.js:474:21) at setupAndRun (/home/expo/workingdir/build/node_modules/@react-native-community/cli/build/index.js:271:24)info Run CLI with --verbose flag for more details.
[stderr]
[stderr]
[stderr]
[stderr]
[stderr]
[stderr]
BUILD FAILED in 18s
Error: Gradle build failed with unknown error. See logs for the "Run gradlew" phase for more information.
please provide me solutions of these errors
I am Calling an Inside my expo App which is being successfully implemented, But same is not being called in APK. Can you help me with that?
Hi There.
After I runned this command: "expo build:android" in the VS Code,
I see this error:
"Uploading JavaScript bundles
read ECONNRESET
Error: read ECONNRESET
at TLSWrap.onStreamRead (internal/stream_base_commons.js:209:20)
"
Please give me a solution.
Hey,
Expo sdk recently had an update. A new cli has been put in place to build apks. you can take a look at this : expo.dev/eas
Very well explained! 🙌
After build apk it will not run on Android when i install on Android device and open it will show keeps stopping. Please help me what is the issue and how can i solve this issue anyone can help please... I am frustrating about 2 day's and not able to find the solution..
Thank You Brother
great post mr @chinmay Mhatre
Thank you so much sir.
I just can download the .aab file
Updated the blog on how to download the apk
Hi, Nice to meet you.
Can you help me?
I want to build to .aab file in expo.
If you have any solution, please let me know.
Regards.
I believe you could change the build type to aab or just run eas build. By default the file type is .aab
i followed this steps but get this error:
✖ Uploading to EAS Build (1.8 MB / 1.8 MB)
Error: Request failed: 403 (Forbidden)
Thank you for the blog. Very helpful. 👏👏
After completing the steps to build the apk file as you instructed. I have downloaded the file to my phone. But when I try to open it it fails. When pressed to open it will return to the main screen
How can you solve this issue? Same issue with me....
Some comments have been hidden by the post's author - find out more