React Native Build
Build commands for react native projects
Build profiles explained
productionApk: build app apk file on eas, can be downloaded and shared directly, or eas credentials can be shared with a third party to download and install
developmentApk: Apk build but for development, this supports libraries that uses native code
developmentIos: Similar to the development Apk, but you need an ios paid account to do this, and your ios device needs to be on “developer mode” in order to install these apps, also your device UID needs to have been added to list of authorised devices to install the app. Plugging your iphone to your mac should show you the UID of the iphone in your finder, also run
eas device:create
to add your device
productionIos: simiar to developmentIos but this is a production build and cant be used for development, using this process bypasses testflight
production: this profile builds app for testflight or playstore directly for both ios and android respectively
#build.sh
# update eas
npm install -g eas-cli
# login to eas
eas login
# configure build
eas build:configure
# build production apk
eas build -p android --profile productionApk
# build development apk
eas build -p android --profile developmentApk
# build development ios
eas build -p ios --profile developmentIos
# build production ios
eas build -p ios --profile productionIos
# add test devices for ios
eas device:create
# check build first locally
npx expo-doctor@latest --verbose
# check dependencies compatability
npx expo install --check
# register device for distribution build
eas device:create
# upgrade to latest version of expo
npx expo install expo@latest
npx expo prebuild
eas build --platform android
eas build --platform ios
eas build --platform android --auto-submit
eas build --platform ios --auto-submit
{
"cli": {
"version": ">= 0.17.8",
"appVersionSource": "remote"
},
"build": {
"productionApk": {
"android": {
"buildType": "apk"
},
"env": {
"EXPO_PUBLIC_SUPABASE_PROJECT_URL": "",
"EXPO_PUBLIC_SUPABASE_ANON_KEY": ""
},
"autoIncrement": true
},
"developmentApk": {
"developmentClient": true,
"android": {
"buildType": "apk"
},
"env": {
"EXPO_PUBLIC_SUPABASE_PROJECT_URL": "",
"EXPO_PUBLIC_SUPABASE_ANON_KEY": ""
},
"environment": "development",
"autoIncrement": true
},
"developmentIos": {
"developmentClient": true,
"distribution": "internal",
"ios": {
"resourceClass": "m-medium"
},
"env": {
"EXPO_PUBLIC_SUPABASE_PROJECT_URL": "",
"EXPO_PUBLIC_SUPABASE_ANON_KEY": ""
},
"environment": "development",
"autoIncrement": true
},
"productionIos": {
"distribution": "internal",
"ios": {
"resourceClass": "m-medium"
},
"env": {
"EXPO_PUBLIC_SUPABASE_PROJECT_URL": "",
"EXPO_PUBLIC_SUPABASE_ANON_KEY": ""
},
"autoIncrement": true
},
"production": {
"ios": {
"resourceClass": "m-medium"
},
"env": {
"EXPO_PUBLIC_SUPABASE_PROJECT_URL": "",
"EXPO_PUBLIC_SUPABASE_ANON_KEY": ""
},
"autoIncrement": true
}
},
"submit": {
"production": {
"android": {
"serviceAccountKeyPath": "./servide-account file.json", #needed for auto submit app to playstore
"track": "internal"
}
}
}
}
</>