> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plaud.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Android Starter App

> Build a branded iOS app that connects to Plaud devices in minutes using the iOS starter app.

This guide walks through the process of building a native Android [Starter App](/plaud-embedded/starter-app-specs) that:

1. Connects to Plaud devices
2. Syncs recordings from Plaud device to mobile phone
3. Uploads recordings from your users' mobile phone to Plaud's file storage
4. Transcribes recordings with the [Transcription API](/plaud-embedded/transcription-api-overview)

<Frame>
  <img src="https://mintcdn.com/plaud/E1lTvtruOMzEP-O1/assets/starter-app.png?fit=max&auto=format&n=E1lTvtruOMzEP-O1&q=85&s=2f13d6a57c8f8d6ffd34fb9f37fb1ebf" alt="starter-app" width="1600" height="737" data-path="assets/starter-app.png" />
</Frame>

## Onboard to the Plaud Developer Platform

Sign in to the [Plaud Developer Portal](https://portal.plaud.ai/) (It's completely free with a generous device connection limit and transcription usage).

Create an **Embedded SDK Application** to receive your **Client ID** and **Secret Key**.

<Frame>
  <img src="https://mintcdn.com/plaud/E1lTvtruOMzEP-O1/assets/app-created.png?fit=max&auto=format&n=E1lTvtruOMzEP-O1&q=85&s=7ae9480fa729f0828e61d35c750d8ba3" alt="app credentials" width="1426" height="667" data-path="assets/app-created.png" />
</Frame>

## Set Up the Starter App

<Tip>
  **Try the Plaud Embedded Skill** to have your coding agent help you through your Starter App deployment.

  ```bash theme={"system"}
  npx skills add Plaud-AI/plaud-embedded-skills
  ```

  Visit our [GitHub repo](https://github.com/Plaud-AI/plaud-embedded-skills.git) for more details on the skill.
</Tip>

### Prerequisites

* Android Studio (JDK 17)
* minSdk 21 (Android 5.0+), compileSdk 34
* A **physical Android device** — the SDK libraries are `arm64-v8a`/`armeabi-v7a`, Android simulators are not supported
* A Plaud device for end-to-end testing

### Clone the starter app

You can find the GitHub repository for the [starter app here](https://github.com/plaud-ai/plaud-template-app).

```bash theme={"system"}
git clone https://github.com/plaud-ai/plaud-sdk-public.git
cd android
```

<Note>
  Install [Android Studio](https://developer.android.com/) to build and test your Android Starter app.

  ```bash theme={"system"}
  brew install --cask android-studio
  ```
</Note>

### Retrieve a user token

The `USER_ACCESS_TOKEN` is the per-user JWT your backend mints by calling `POST /open/partner/users/access-token`. See the [Authorization API reference](/plaud-embedded/auth-api-overview) for the full exchange flow.

### Configure credentials

After navigating to the `/android` directory, create a `local.properties` file (gitignored) and add the **user token, client ID, and API key** (if using transcription).

```bash local.properties theme={"system"}
sdk.dir=/path/to/your/Android/sdk

# Required for SDK initialization
PLAUD_USER_ACCESS_TOKEN=your-jwt-token

# Required for Transcription API (optional, not needed for device features)
PLAUD_CLIENT_ID=your-client-id
PLAUD_API_KEY=your-api-key
```

### (Optional) Apply branding

Four places control the entire visual identity:

#### App Name

Navigate to `app/src/main/res/values/strings.xml`. You can modify the app name, and other text on the welcome screen.

```xml strings.xml theme={"system"}
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Plaud Template</string>

    <!-- Onboarding -->
    <string name="welcome_app_name">App name</string>
    <string name="get_started">Get Started</string>
    <string name="connect_later">Connect device later</string>
```

#### App icon

Create new image assets directly in Android Studio. Right-click `res`, then go to `New > Image Asset`.

<Frame>
  <img src="https://mintcdn.com/plaud/CZS9FFE1Vm6qvvMx/assets/android-image-asset.png?fit=max&auto=format&n=CZS9FFE1Vm6qvvMx&q=85&s=9c9c00ff6b96d7efae89222c85219282" alt="android-studio image asset" width="2276" height="1520" data-path="assets/android-image-asset.png" />
</Frame>

#### Theme colors

In `res/values/colors.xml`, you have full control over te starter apps primary colors and color pallete.

```xml colors.xml theme={"system"}
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Theme colors -->
    <color name="bg_primary">#F9F9F9</color>
    <color name="text_primary">#1F1F1F</color>
    <color name="text_secondary">#A3A3A3</color>
    <color name="separator">#EBEBEB</color>
```

## Run & test with a real device

Open **Android Studio**, and wait for gradle to finish building the app.

Once indexing and build is finished, **connect your physical Android device** and run the app.

<Frame>
  <img src="https://mintcdn.com/plaud/CZS9FFE1Vm6qvvMx/assets/android-studio.png?fit=max&auto=format&n=CZS9FFE1Vm6qvvMx&q=85&s=aaedfe86223763b075bb2d77a88b235d" alt="android studio" width="2206" height="1128" data-path="assets/android-studio.png" />
</Frame>

Verify app launches, device pairs, recording syncs, and transcript appears on your Android app.

<Warning>
  **Unbind your Plaud device after testing and before uninstalling the Starter App!**

  Plaud devices can only be bound to one application at a time (tied to your Partner Token). You will not be able to bind your Plaud device to another app (or the Plaud App) before unbinding from the Starter App.
</Warning>

## Publishing to the Google Play Store

<Steps>
  <Step title="Sign up for a Google Play Developer account">
    You will need a [Google Play Developer Account](https://play.google.com/console/signup) to publish to the Play Store (current pricing is a **one-time \$25 registration fee**).

    Google requires identity verification, and organization accounts also require D-U-N-S number verification — start this early, as it can take a few days.
  </Step>

  <Step title="Set a unique application ID">
    In `app/build.gradle.kts`, replace the template's application ID with your own **unique** reverse-domain identifier. This value can never be changed once the app is published.

    ```kotlin app/build.gradle theme={"system"}
      android {
        namespace 'com.plaud.template'// [!code --]
        namespace 'com.yourorg.yourapp'// [!code ++]
        compileSdk 34

        defaultConfig {
            applicationId "com.plaud.template"// [!code --]
            applicationId "com.yourorg.yourapp"// [!code ++]
            minSdk 21
    ```

    <Warning>
      Bump `versionCode` on every upload — Play Console rejects a build that reuses a `versionCode` already in the track.
    </Warning>
  </Step>

  <Step title="Generate an upload keystore">
    Play requires every build to be signed with a consistent upload key. In Android Studio, go to `Build > Generate Signed App Bundle / APK`, choose **Android App Bundle**, then `Create new...` to generate a keystore.

    ```bash theme={"system"}
    keytool -genkey -v -keystore upload-keystore.jks \
      -keyalg RSA -keysize 2048 -validity 10000 -alias upload
    ```

    <Warning>
      Store the keystore file and its passwords somewhere safe and **out of version control**. Losing your upload key means you can't ship updates to an existing listing without going through Google's key reset process.
    </Warning>

    Keep the credentials in `local.properties` (gitignored) alongside your Plaud credentials, and reference them from a `signingConfigs` block in `app/build.gradle.kts`.
  </Step>

  <Step title="Build a signed release bundle">
    Finish the `Build > Generate Signed App Bundle / APK` flow with the `release` build variant. Android Studio writes the bundle to `app/release/app-release.aab`.

    ```bash theme={"system"}
    ./gradlew bundleRelease
    ```

    <Note>
      The Plaud SDK ships `arm64-v8a` and `armeabi-v7a` native libraries. Leave ABI splits and `abiFilters` alone so both are packaged — Play serves the right slice per device automatically.
    </Note>
  </Step>

  <Step title="Create your app in Play Console">
    In [Play Console](https://play.google.com/console), select `Create app`, then set your app name, default language, app type, and free/paid status. The application ID from Step 2 is claimed when you upload your first bundle.
  </Step>

  <Step title="Upload to a testing track">
    Under `Testing > Internal testing`, create a release and upload your `.aab`. Add your testers by email or Google Group, then share the opt-in link with them.
  </Step>

  <Step title="Complete the store listing and content declarations">
    Work through the `Dashboard` checklist. Items to emphasize for a conversation capture app are:

    1. **Data safety**
    2. **Permissions declaration**: the SDK requires Bluetooth and (on Android 11 and below) location permissions to scan for and connect to Plaud devices.
    3. **Privacy policy**
    4. **Store listing assets** — app icon (512×512), feature graphic (1024×500), and at least two phone screenshots.
  </Step>

  <Step title="Publish!">
    Once the checklist is complete, submit your production release for review! Google's review typically takes a few days for a first submission.
  </Step>
</Steps>
