Warning This repository is deprecated. You should take a look at Expo EAS to build your future applications
Github https://github.com/Steve192/expo-turtle-builder
Docker image to build expo projects for android (iOS planned) without usage of expo.dev services.
This includes the need to publish on expo using expo publish
(planned feature) aswell as the use of the expo build infrastructure.
When executing expo-turtle-builder, an apk/aab file will be built to output/android.<aab|apk>
Important: run npm i (or npm ci) before calling the expo-turtle-builder
Inside container:
# Needed (planned: only if app not not publicly available at expo.dev)
export EXPO_USERNAME=xxx
export EXPO_PASSWORD=xxx
# Needed if EXPO_USERNAME and EXPO_PASSWORD are not provided or keystore is not stored at expo.dev
export EXPO_ANDROID_KEYSTORE_BASE64=xxx
export EXPO_ANDROID_KEYSTORE_ALIAS=xxx
export EXPO_ANDROID_KEYSTORE_PASSWORD=xxx
export EXPO_ANDROID_KEY_PASSWORD=xxx
expo-turtle-builder \
--target <android|ios> \
--format <apk|app-bundle> \
--public-url <optional url> \
Using the container on a directory
npm ci
docker run -it --rm \
-v $(pwd):/build \
-e EXPO_USERNAME=<your expo username> \
-e EXPO_PASSWORD=<your expo password> \
steve192/expo-turtle-builder \
expo-turtle-builder --target android --format app-bundle
In gitlab ci
build-android:
stage: build
image: steve192/expo-turtle-builder
variables:
# Token not supported by turtle, store variables in CI variables section of your project
EXPO_USERNAME: $EXPO_USERNAME
EXPO_PASSWORD: $EXPO_PASSWORD
script:
- npm ci
- expo-turtle-builder --target android --format app-bundle
artifacts:
paths:
- output/android*
Do you want to build for android or iOS (iOS is not supported yet)
Do you want to build an apk or an app-bundle
Provide if you are not providing EXPO_USERNAME or EXPO_PASSWORD to know where your app is hosted.
If you are providing a login, the app.json is used to determine your app, so this parameter is not needed.
If you are not hosting your app on expo.dev, provide this parameter aswell
Provide the following env variables:
Required if public-url is not set or your project is a private expo project
Your expo username
Required if public-url is not set or your project is a private expo project
Your expo password
Required if your keystore is not stored at expo.dev
Your android keystore encoded as base64. To encode your keystore use echo your_keystore_file | base64
Required if your keystore is not stored at expo.dev
The alias of your key in your keystore
Required if your keystore is not stored at expo.dev
Android keystore password
Required if your keystore is not stored at expo.dev Android key password