Guide · Android · Lovable · Bolt · v0

    Lovable, Bolt or v0 to APK: your app on an Android phone

    Nathan Claiborne
    Lovable, Bolt and v0 build web apps. An APK is the file an Android phone installs. Getting from one to the other takes three things: the code on GitHub, a native Android shell around it (Capacitor), and a signed build. Here is each step for each tool, including the one setting that trips up v0 apps.

    APK or AAB?

    An .apk installs straight onto a phone: yours, a friend's, a tester's. An .aab is what Google Play wants for a store release. Corenna builds both from the same repo in one Android build, so start with the APK and keep the AAB for when you publish.

    Step 1: Put the code on GitHub

    • Lovable: add a GitHub connection under Workspace settings → Git → GitHub, then click Connect in the project's GitHub settings. Lovable creates a private repository and keeps it in two-way sync on the default branch. It is available on every Lovable plan.
    • Bolt: use Bolt's GitHub integration to push the project to a repository in your GitHub account.
    • v0: connect the project to GitHub from v0 and push the code to a repository. If your project cannot, download the code and push it to a new repository yourself.

    Step 2 (v0 and other Next.js apps): build to static files

    Inside the app, Capacitor shows your web app from files packed into the APK. There is no web server on the phone. Lovable apps, and most Bolt apps, are Vite apps that already build to static files in dist/. v0 apps are Next.js apps, which by default expect a server, so switch on static export:

    // next.config.mjs
    export default {
      output: "export",
      images: { unoptimized: true },
    };

    Now next build writes the app to out/, which is where Corenna looks for a Next.js app. Anything that needs a server will not run inside the app: API routes, server actions, pages rendered on each request. Move that work to a backend the app calls over the internet, such as your Supabase project or a deployed API, and call it with a full URL rather than a relative /api/... path.

    Step 3: Check the repo

    Paste the repo into the free repo check (no account needed). It finds the web app, its build script and output folder, and whether a Capacitor setup is there, and lists anything that would stop an Android build before you start one.

    Step 4: Build the signed APK

    1. Sign in to Corenna with GitHub and give the Corenna GitHub App access to that repo.
    2. Create the project. If the repo has no Capacitor setup, Corenna adds it. New projects get the package ID com.<github-owner>.<repo>; an ID already in the repo is kept.
    3. Start an Android build. Corenna generates the signing key on the first build and shows you its password: save it, because every update must be signed with the same key.
    4. The build runs in GitHub Actions in your account, with live logs. Your first successful Android build is free, with no card.

    Step 5: Install it on your phone

    Corenna works in a phone's browser, so you can download the .apk straight onto the phone. Open it; the first time, Android asks you to allow installs from your browser or files app ("Install unknown apps"). Play Protect may warn that the app comes from an unknown developer.

    Google is also bringing in developer verification for apps installed on certified Android devices. To share the APK with other people, read how to send your Android app to testers.

    Updating the app

    Change the app in Lovable, Bolt or v0, let it reach GitHub, and build again. The build number goes up after every successful build and becomes the Android version code, so the new APK installs over the old one and keeps its data, as long as it is signed with the same key and keeps the same package ID.

    When you are ready for Google Play

    Use the .aab from the same build. Google requires a brand-new app's first release to be created by hand in the Play Console; after that, Corenna can send each update straight to a Play track. A personal developer account created after November 13, 2023 must first pass Google Play's 12-tester rule.

    Keep reading