What this guide covers #
This guide covers two parts of Android beta testing on TesterBuddy: the Android SDK (crashes, shake feedback, tester identification in your app) and Google Play Console setup (automatic beta access for testers on the Play Store).
The flow #
Here's what happens behind the scenes once you complete the setup:
-
1Tester registers on TesterBuddyWhen a user creates a TesterBuddy account, they are prompted to join the TesterBuddy Google Group during onboarding.
-
2Tester finds your appThey browse the app listing, read the description and screenshots, and tap "Join Testing".
-
3Play Store beta unlocksBecause the tester is already in the Google Group you added to Play Console, the beta opt-in link in the Play Store becomes active for them immediately.
-
4Feedback comes inTesters send feedback, respond to surveys, and chat — all inside TesterBuddy. You see everything in your developer dashboard.
What the Android SDK does #
The TesterBuddy Android SDK is a Kotlin library you add to the app you're testing. It sends crashes, ANRs, and shake feedback to your TesterBuddy dashboard — the same pipeline as the iOS and Web SDKs.
1.0.0 on GitHub for a stable release.tb:{token} from clipboard when tester starts from the TesterBuddy app.Installation (JitPack) #
The SDK is published from GitHub via JitPack. Requirements: Android API 24+, Kotlin. The SDK manifest declares INTERNET for you.
In settings.gradle.kts (project-level):
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}
In app/build.gradle.kts:
implementation("com.github.DavidTereba:testerbuddy-android-sdk:1.0.0")
1.0.0 is recommended for production apps.API key from dashboard #
Your SDK authenticates with the app's web API key (web_api_key in the database). Events are sent to POST https://testerbuddy.app/api/sdk/ingest with header x-tb-key.
To find the key: open your app in the TesterBuddy dashboard → app detail → copy the SDK / Web API key (same key used for the Web SDK on web apps).
BuildConfig or local properties, not committed plaintext in public repos.Quick start #
Call configure in your Application.onCreate() as early as possible. That enables crash reporting, shake feedback, session tracking, and announcements.
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
TesterBuddy.configure(
context = this,
apiKey = "YOUR_WEB_API_KEY"
)
}
}
In each Activity, set the screen name so crashes and feedback include context:
override fun onResume() {
super.onResume()
TesterBuddy.setScreen("HomeScreen")
}
TesterBuddy.configure(
context = this,
apiKey = "YOUR_WEB_API_KEY",
userId = null, // optional manual tester id
enableAnrDetection = true,
enableNetworkMonitoring = false, // use logNetworkError() manually
enableSessionTracking = true,
enableAnnouncements = true,
debugLogging = false
)
Crash reporting #
Enabled automatically after configure(). Uncaught exceptions are written to disk and uploaded on the next app launch, so nothing is lost if the device was offline during the crash.
Captured data includes exception type and stack trace, device model, Android version, app version, current screen (if set), and tester identity (when known).
Shake feedback #
When a tester shakes the device, the SDK captures a screenshot of the current screen first, then opens a fullscreen feedback overlay (Bug / Idea / Other chips, screenshot thumbnail, message field). The report is ingested as SDK feedback (source: android_sdk) and appears in the tester's feedback thread — you get a push notification like any other tester message.
Shake detection uses accelerometer delta (~2.2g). For development without shaking, call TesterBuddy.triggerFeedback().
configure(). Shake detection starts when the SDK is configured with a valid API key.Session tracking #
Enabled by default. Each foreground visit sends a session start event when the app becomes visible and a session end event when it goes to background. Events are paired by foregroundSessionId (one visit) while installSessionId correlates all events from the same install.
| Key | Description |
|---|---|
sessionEvent | start or end |
foregroundSessionId | UUID for this foreground visit |
installSessionId | UUID for the app install |
launchCount | Process launch number |
durationSeconds | Session length (on end) |
crashedLastSession | true if previous session ended in a crash |
totalSessionSeconds | Cumulative foreground time for install |
startType | cold or warm |
lastScreen | Last screen from setScreen() |
deviceModel, locale, networkType | Device and environment context |
View session KPIs and per-session detail in the TesterBuddy app under Events → Sessions.
Event types #
| Type | Trigger | Dashboard |
|---|---|---|
crash | Uncaught exception | Crashes |
anr | Main thread blocked 5s+ | ANR |
feedback | Shake device | Feedback |
session | Foreground lifecycle | Sessions |
custom | TesterBuddy.log() | Custom |
network_error | logNetworkError() | All / grouped |
Tester identification #
Linking events to a specific tester helps you see who hit each crash or ANR in the dashboard.
When a tester taps Start Testing in the TesterBuddy Android app, a one-time token tb:{uuid} is copied to the clipboard. On first launch of your app, the SDK reads and exchanges it (up to 5 clipboard reads per install).
Handle URLs that include ?tb_tester_id=:
// In Activity handling VIEW intents:
TesterBuddy.handleUri(intent?.data)
TesterBuddy.setUserId(123) // after your login flow
TesterBuddy.setUserId(null) // on logout
Screen tracking & custom logs #
TesterBuddy.setScreen("CheckoutScreen")
TesterBuddy.log("Onboarding completed", metadata = mapOf("step" to "3"))
TesterBuddy.logNetworkError("https://api.example.com/items", statusCode = 503)
ProGuard / R8 #
If you use code shrinking, add this keep rule:
-keep class app.testerbuddy.sdk.TesterBuddy { *; }
Full API reference and sample app: GitHub README. Build the sample with ./gradlew :sample-app:assembleDebug and set TB_API_KEY in sample-app/build.gradle.kts for live testing.
Setting up Play Console #
This is a one-time task. Once the group is added, it works for all future testers automatically.
-
1Open Google Play ConsoleGo to play.google.com/console and select your app.
-
2Navigate to TestingIn the left sidebar, go to Testing and choose your track — Open testing, Closed testing, or Internal testing.
-
3Add the TesterBuddy Google Group
In the Testers tab, click "Add email list" and enter the following group address:
testerbuddy-tester-group@googlegroups.comSave the email list and then click "Save changes" on the testing track.
-
4Publish your testing trackMake sure your testing track has an active release. Testers will only be able to opt-in once a build is available.
About the Google Group #
TesterBuddy uses a single shared public Google Group for all Android testers. This simplifies setup — you only need to add one email list to Play Console, and all TesterBuddy users on Android are covered.
- Email: testerbuddy-tester-group@googlegroups.com
- Visibility: Public — anyone on the web can view and join
- Membership: Testers join during TesterBuddy onboarding
- Owner: TesterBuddy (managed by the TesterBuddy team)
Which track to use? #
Google Play Console has three testing tracks. Here's when to use each:
Verify it works #
After completing the setup, here's how to confirm everything is working:
-
1Check Play ConsoleGo to your testing track → Testers tab. You should see
testerbuddy-tester-group@googlegroups.comlisted as an email list. -
2Test with your own accountJoin the TesterBuddy Google Group with a personal Gmail account, then search for your app in the Play Store. You should see the option to opt-in to the beta.
-
3Check TesterBuddy dashboardWhen a tester joins your app in TesterBuddy, they appear in the Testers section of your developer dashboard.
Joining an Android beta #
New to TesterBuddy on Android? Start on the public beta waitlist — we email onboarding steps before Google Play access. The Play link in the header is for testers who already completed that flow.
Then, to access each developer's beta build:
-
1Join the TesterBuddy Google Group
During onboarding you'll be prompted to join. Or go directly to:
groups.google.com/g/testerbuddy-tester-groupJoin → -
2Find an app and tap "Join Testing"Browse apps in TesterBuddy, open one you want to test, and tap Join Testing.
-
3Opt in on the Play StoreOpen the app's Play Store page and tap "Become a tester". The beta build will download automatically.
-
4Send feedbackUse the app and share your experience directly in TesterBuddy — through the chat, surveys, or direct messages to the developer.