Android SDKを始める
OpenTester Android SDKは、テスターログイン、参加権限の確認、バグ・改善意見の送信を提供します。Kotlinのsuspend関数をコルーチンから呼び出し、ログインにはシステムブラウザーを使います。
| 要件 | バージョン |
|---|---|
| SDK | 0.1.0 |
| プラットフォーム | Android API 26以上 |
| ソースビルド | JDK 17以上、Android SDK Platform 36 |
| 依存関係 | AndroidX Browser 1.8.0、Kotlin Coroutines Android 1.10.2 |
| インストール方法 | Maven Central、JitPack、ソースモジュール、ローカルMaven |
配布状況
Maven Centralのapp.opentester:android-sdk:0.1.0、またはJitPackのv0.1.0を利用できます。自動エラー収集、スクリーンショット添付、オフラインキューは含まれません。
1. アプリとテスターを準備する
開発者コンソールでアプリを登録し、アプリIDをコピーします。https://your-app.example.com/opentester/callbackなど、アプリが受信するHTTPSコールバックを登録します。
テスターはアプリに参加申請し、参加方式に応じた承認を受ける必要があります。Google Groupへの加入やGoogle Playテストのオプトインは別の手順です。
2. SDKをインストールする
Androidプロジェクトのsettings.gradle.ktsにMaven Centralを追加します。
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}アプリモジュールのbuild.gradle.ktsにテストビルド用の依存関係を追加します。
android {
compileSdk = 36
defaultConfig { minSdk = 26 }
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions { jvmTarget = "17" }
}
dependencies {
debugImplementation("app.opentester:android-sdk:0.1.0")
}この例ではdebugにのみSDKを含めます。SDKを参照するクラスやmanifest設定もsrc/debug/に配置します。テスト用flavorがある場合は、その依存関係とソースセットを使ってください。一般公開ビルドにはテスターログインの制限を残さないようにします。
その他のインストール方法
- JitPack:
maven { url = uri("https://jitpack.io") }を追加し、debugImplementation("com.github.opentesterapp:opentester-android-sdk:v0.1.0")を使います。Maven Central版と同時に追加しないでください。 - ローカルMaven: SDKリポジトリで
./gradlew :opentester:publishToMavenLocalを実行し、mavenLocal()とapp.opentester:android-sdk:0.1.0を使います。JitPack版との重複を避けてください。 - ソースモジュール: SDKの
opentesterモジュールを追加し、debugImplementation(project(":opentester"))で参照します。プラグインのバージョンとリポジトリ設定はホスト側に合わせます。 - AAR:
./gradlew :opentester:assembleReleaseで生成したopentester/build/outputs/aar/opentester-release.aarを使用できます。AAR単体には推移的依存関係が含まれないため、AndroidX BrowserとKotlin Coroutinesも追加します。
3. クライアントを初期化する
アプリIDとドメインを実際の値に置き換えます。apiBaseUrlとwebBaseUrlはパスを含まないオリジンです。SDKのapiBaseUrlに/api/v1を追加しないでください。 ホストされたサービスではhttps://api.opentester.appとhttps://opentester.appを使います。
// app/src/debug/java/com/example/app/TesterApplication.kt
package com.example.app
import android.app.Application
import dev.opentester.sdk.OpenTester
import dev.opentester.sdk.OpenTesterConfig
class TesterApplication : Application() {
val tester by lazy {
OpenTester(
OpenTesterConfig(
appId = "YOUR_APP_ID",
apiBaseUrl = "https://api.example.com",
webBaseUrl = "https://opentester.example.com",
redirectUri = "https://your-app.example.com/opentester/callback",
languageTag = "ja-JP",
)
)
}
}SDKインスタンスはApplicationなどに1つ保持します。Activityの再生成ごとに作り直すと、進行中のログイン情報が失われます。既存のApplicationがある場合は、テストビルド用の実装に初期化処理を統合します。
src/debug/AndroidManifest.xmlに登録し、認証ガイドのコールバックActivityとApp Linksを設定します。
4. ログインして報告を送信する
Activityのメインスレッドからブラウザーを開きます。
val tester = (application as TesterApplication).tester
tester.authenticate(this)コールバックを受信したら、コルーチンでhandleCallback(uri)を呼びます。AccessGrantを受け取った後、認証済みのtesterでバグを送信できます。
import dev.opentester.sdk.BugReport
val report = BugReport(
title = "保存ボタンが動作しません",
description = "タイトルを入力して保存を押しても画面が変わりません。",
steps = "新規プロジェクト → タイトル入力 → 保存",
expected = "プロジェクト一覧に移動",
actual = "画面に変化なし",
appVersion = "1.0.0-test",
deviceInfo = "Pixel; Android 16",
)
val issue = tester.submitBug(report)
// issue.idで送信結果を表示します。送信前に報告内容をユーザーに提示してください。アプリバージョンと端末情報はアプリが明示的に渡し、SDKは自動収集しません。
次のステップ
- ブラウザー認証: コールバックActivity、App Links、セッション。
- バグと改善意見: 制限、再試行、エラー処理。
- Kotlin APIリファレンス: 関数とデータモデル。
- トラブルシューティング: エミュレーター接続と認証失敗。