Create an Android App Project — from Repo to APK
This guide walks you through the whole path: create a FlawDesk project -> link a GitHub repo -> configure the Android module -> trigger the first APK build.
Prerequisites
- A workspace in FlawDesk
- A GitHub account
- For Play Store upload, additionally: a Google Play Developer account + service account (see Set up a Google Play service account)
1. Create a FlawDesk project
1. Sidebar -> + New Project 2. Name, key (e.g. my-app), type: Code 3. Create
2. Link a GitHub repo
1. Store a GitHub token: Workspace settings -> GitHub tab -> enter a personal access token with repo scope 2. Create the repo on GitHub: github.com/new -> owner, name, public/private -> "Create repository" 3. Connect it in FlawDesk: Project -> ⚙️ -> Code tab -> GitHub repo section -> owner + repo name -> Save
3. Configure the Android module
1. Project -> ⚙️ -> Code tab -> + Add module 2. Fields:
- Module key: e.g.
app - Type:
android-app - Path in repo: usually
.(repo root)
3. Save
FlawDesk automatically detects whether it is a Capacitor app or a native Android app.
4. Configure the "Android" tab
- App ID (package name): e.g.
com.yourdomain.app - App name: the display name on the device
- Keystore: upload one or let FlawDesk generate it
5. Write the workflow file into the repo
1. Project -> ⚙️ -> Workflow tab 2. FlawDesk shows the diff between the repo and the template 3. Click "Push to create" -> FlawDesk creates .github/workflows/android-build.yml
6. Trigger the first build
1. NavRail -> rocket icon (Deployment tab) 2. Select the Android module 3. Version name (e.g. 0.1.0), version code (e.g. 1), track (internal) 4. Start build
A build typically takes 5–8 minutes. The log is available in FlawDesk under Deployment -> Build history.
Common problems
"Keystore alias mismatch" — in the Android tab -> Keystore section -> correct the alias -> Save.
"PLAY_SERVICE_ACCOUNT_JSON secret missing" — re-upload the service account JSON in the Android tab.
Build stuck at "queued" — GitHub Actions is busy or the minutes quota is exhausted. Check GitHub -> Settings -> Billing.