Fourteen

One line of Gradle. No more daily screenshots.

Testers just use your app, and Fourteen confirms it. You also get crash reports, device coverage, and in-app bug reports.

The first cohort begins Saturday, November 14, 2026. The SDK is available now, so you can add it to your build ahead of time. Join the waitlist to get a spot in the first groups.

Without the SDK

  • Testers send a screenshot every day
  • You check that proof yourself
  • No crash reports or device coverage in Fourteen

With the SDK

  • Testers use your app, and the day confirms itself
  • Crashes grouped by error, with build and Android version
  • See the phones, Android versions, screen types, and countries you've covered
  • Testers shake their phone to send you a bug report

How it works

Scroll through the five steps. The first three are all you need.

  1. 1

    Add one line

    Put the SDK in your app module's build.gradle.kts. There's no setup code, and it starts itself.

  2. 2

    Sync and upload your build

    Sync Gradle and upload the build to your closed test. Nothing else changes in your app.

  3. 3

    Check it in one tap

    Tap Check my build in Fourteen. It opens your app and tells you right away if the SDK is working.

  4. ✓

    That's it. Testers just use your app

    No daily screenshots. Each tester's day fills in after real use, and crashes and device details come with it.

  5. 4

    Optional: confirm a task

    Want proof testers finished something specific? Add one call where the action succeeds.

  6. 5

    See who really did it

    Match the name to a day's task, and Results shows exactly who finished it, for your Google application too.

Set it up

1

Add the dependency

Add this to your app module's build.gradle.kts, then sync Gradle. It supports Android 7.0 (API 24) and up.

dependencies {
    implementation("app.getfourteen:sdk:1.0.1")
}

There's no setup code. The SDK starts itself and does nothing until a tester connects through Fourteen or an invite link, so anyone else who has your build isn't measured.

2

Upload the build to your closed test

Use implementation, not debugImplementation, because testers install your release build from Google Play. Upload it before day 1, and tell Fourteen you've added the SDK during app setup.

3

Check that it's working

Install your build on the phone with Fourteen, then tap Check my build during setup or on My test. Fourteen opens your app, and the SDK reports in once. If your build doesn't have the SDK, you'll be told right away. The check doesn't count as testing, and your phone doesn't stay connected.

Once the test starts, testers start your app from Fourteen, which connects the SDK the first time. A day counts once a tester has at least 60 seconds of active use and 5 touches. Their square then fills in on your My test tab, which can take a moment after they leave the app.

To check a device directly, show this on a debug screen:

val status = Fourteen.status()
// status.paired, status.registered, status.todayActiveSeconds,
// status.todayTouches, status.todayCompletedTasks

Optional: confirm a task

You don't need this for days to count. Add it if you want proof that testers finished a specific action.

4

Report when the action happens

Call this at the point where the action really succeeds, not when a button appears on screen:

import app.getfourteen.sdk.Fourteen

fun onRouteSaved() {
    Fourteen.completeTask("saved_route")
}

Names can use letters, numbers, dots, dashes, and underscores, up to 64 characters. Calls are ignored for anyone who isn't a connected tester.

5

Match it to a day's task

  1. In Fourteen, open My test, then Tasks.
  2. Tap Edit on an upcoming day, since days that have started can't be changed.
  3. Enter the same name, such as saved_route, under Task event.

To check them, tap Test my events on the Tasks screen. Fourteen opens your build on your phone, you do each action, and it shows which events it heard, matched to your tasks. This doesn't count as testing, and only the event names are kept.

To list every call in your code, including ones that haven't run yet:

grep -rn "Fourteen.completeTask" app/src
6

See who finished it

Testers see Task confirmed when the event arrives. On your Results tab, tap an area to see who finished it each day, with a check on anyone your app confirmed.

A tester still gets credit for active use if the event never fires, so a bug in your app can't count against them.

What you get automatically

Crash reports

Crashes are grouped by error on your Results tab, with build, Android version, and which testers were affected. If you use another crash tool, such as Crashlytics, it keeps working.

If your release build uses R8, class and method names in these reports are shortened. Use your mapping file to read them, or keep them readable in your test build.

Verified Play installs and device coverage

Fourteen shows how many testers installed through Google Play, plus which phones, Android versions, screen types, and countries you've covered. An install check doesn't prove someone is still opted in, so Play Console remains the source of truth.

In-app bug reports

Connected testers can shake their phone to send you a note from inside your app. To add your own button too, call:

Fourteen.openBugReport()

What to declare on Google Play

Google asks for a Data safety form on closed, open, and production tracks, and you're responsible for what SDKs in your app collect. Here's how the SDK's data lines up with Google's data types. This is a guide, not legal advice, and your own app's data goes on the form too.

Google's data typeWhat the SDK sends
App activity: App interactionsActive time, sessions, touch counts, and task names
App activity: Other user-generated contentA tester's bug report note
App info and performance: Crash logsError type, code location, and count
App info and performance: DiagnosticsApp version, phone maker and model, Android version, phone or tablet, and whether the app came from Google Play
Personal info: User IDsA tester ID with no name or email in it, which Fourteen can link to the tester's account
Photos and videos: PhotosA screenshot, only if a tester sees it and chooses to send it with a bug report

Questions you'll need to decide

  • Location: the SDK sends the phone's country setting, not a location reading, and doesn't use location permissions. Decide whether you treat that as location data.
  • Sharing: Google says transfers to a service provider working on your behalf generally don't count as sharing. Consider how that applies to your test, since Fourteen stores this data and group members may see test status.
  • Purpose: this data is used to confirm testing, show you results, and find problems in your app.
  • After the test: once the SDK is out of your production build, update your form to match.

Data travels over HTTPS. Testers with a Fourteen account can delete it at getfourteen.app/delete-account.

Before you go to production

Remove the SDK from your production build

Delete the dependency and any Fourteen calls. Or, if you'd rather keep the calls in your code, swap the dependency for the stand-in, which has the same functions and does nothing:

implementation("app.getfourteen:sdk-noop:1.0.1")

What the SDK collects

Only collected from connected testers

  • A tester ID that doesn't contain a name or email, your package name, and your version number
  • The date, active time, number of sessions, and number of touches
  • The names of any tasks you report
  • Phone maker and model (such as Google Pixel 8), Android version, phone or tablet, the phone's country setting, and whether the app came from Google Play
  • Crashes: the error type, code location, and count, but never the error message
  • Bug reports: the tester's note, plus a screenshot only if they see it and choose to send it

Apart from a screenshot a tester chooses to send, it doesn't collect screen contents. It also doesn't collect what testers type outside the report form, where they tap, contacts, location, advertising IDs, or account details. It adds the INTERNET and ACCESS_NETWORK_STATE permissions.

You're responsible for your own app's disclosures, including Google Play's Data safety form, while the SDK is in your app. See the privacy policy for details.

Fourteen is an independent project and isn't affiliated with or endorsed by Google. Questions? Email hello@getfourteen.app.