Skip to content
Source CodeBuild Guide

Prepare your Android source build.

Bring a complete project, choose the output, and inspect the result. Source compiles need Builder or Pro. Free is a marked Android Preview of a live website.

Choosing a service? See the supported source workflow. Working in Flutter? Compare the local CLI and cloud routes.

Choose a supported input

  • Flutter: include pubspec.yaml, your Dart application source, declared assets, local packages, and the lockfile when present. Keep android/ if it contains custom native code, plugins, manifests, or flavors.
  • Native Android: include the Gradle settings and build files, application module, and full Gradle wrapper when provided. A lone gradlew or source file is not a complete project.
  • Capacitor: prepare its Android project, including android/ and required bundled web assets. A raw React or Next.js export is not automatically a native build.
  • React Native, Ionic, and Expo source builds are waitlist only. Apple source uploads are disabled. Windows is a URL-wrapper workflow, not a source compiler.

Package the project root

  • Place the project at the ZIP root or inside one top-level folder. Do not upload a deeply nested monorepo and expect the builder to find an arbitrary application directory.
  • Exclude generated caches such as build/, .dart_tool/, and node_modules/. Keep the actual files referenced by the project, including assets and local dependencies.
  • Do not include private signing keys, server credentials, or unrelated files. Use the available signing configuration instead of embedding a keystore in a public repository.
  • Use a normal, unencrypted ZIP. Archive limits, unsafe paths, links, and project validation can reject an upload; follow the error shown by the wizard.

Use an accessible Git repository

  • Supply the repository's HTTP(S) clone URL and the intended branch or tag. The repository must be reachable by the build service without an interactive login.
  • Do not paste a private access token into a URL. If the service cannot access the repository, upload an appropriate project ZIP instead.
  • Include required dependency declarations and lockfiles. Do not assume your laptop's caches, private network services, or credentials are present on the build machine.

Optional: code2native.json

  • Standard projects use detected defaults. For a custom command or artifact location, place code2native.json at the detected project root.
  • The example below is for a native Android Gradle project with an app module, not a Flutter root. Commands must be non-interactive; paths must stay within the workspace.
  • artifacts.dir is a safe relative directory that must exist and contain the requested outputs after the build. Do not point it at the entire source tree.
{
  "artifacts": {
    "dir": "app/build/outputs"
  },
  "commands": {
    "ANDROID": "./gradlew bundleRelease assembleRelease"
  }
}

Match the output to distribution

  • For native Android, assembleRelease produces an APK and bundleRelease produces an AAB. Flutter uses its own toolchain; use the default Flutter route unless your project needs an explicitly configured command.
  • A Play Store build needs a bundle-producing task. Declare the correct command for your modules and flavors instead of relying on automatic command adjustments.
  • A release-mode command does not prove the correct signing key was used. Inspect the artifact's package, version, and signer. For an existing app, preserve the signing and upload-key relationship needed for updates.
  • An AAB is a publishing input, not an app-store approval. Test the artifact and complete the account, policy, and submission requirements for the chosen channel.

Understand the build result and cost

  • Builder or Pro is required for source compiles. Check available credits and plan limits before submitting; an App license is for the release wrap of one website.
  • Build duration depends on worker load, dependency downloads, and the project. Follow status and logs instead of assuming a fixed completion time.
  • The builder can make logged compatibility adjustments, but cannot supply missing application logic or guarantee that arbitrary source compiles. Customer compile errors do not refund credits; platform faults do.
  • Read the first actionable error, fix the relevant file or command, and rebuild from the same project. Source compilation runs in isolated containers, not on the web host.

Before submitting: check plan limits. Before distributing: verify your Android build and review the submission checklist.