---
title: Android SDKを始める
description: AndroidのテストビルドにOpenTesterを導入し、承認済みテスターからバグや改善意見を集めます。
---

# Android SDKを始める {#android-sdk-quick-start}

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 |

::: info 配布状況
Maven Centralの`app.opentester:android-sdk:0.1.0`、またはJitPackの`v0.1.0`を利用できます。自動エラー収集、スクリーンショット添付、オフラインキューは含まれません。
:::

## 1. アプリとテスターを準備する {#1-prepare-the-app-and-testers}

開発者コンソールでアプリを登録し、**アプリID**をコピーします。`https://your-app.example.com/opentester/callback`など、アプリが受信するHTTPSコールバックを登録します。

テスターはアプリに参加申請し、参加方式に応じた承認を受ける必要があります。Google Groupへの加入やGoogle Playテストのオプトインは別の手順です。

## 2. SDKをインストールする {#2-install-the-sdk}

Androidプロジェクトの`settings.gradle.kts`にMaven Centralを追加します。

```kotlin
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
    }
}
```

アプリモジュールの`build.gradle.kts`にテストビルド用の依存関係を追加します。

```kotlin
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がある場合は、その依存関係とソースセットを使ってください。一般公開ビルドにはテスターログインの制限を残さないようにします。

### その他のインストール方法 {#other-installation-options}

- **JitPack:** `maven { url = uri("https://jitpack.io") }`を追加し、`debugImplementation("com.github.opentesterapp:opentester-android-sdk:v0.1.0")`を使います。Maven Central版と同時に追加しないでください。
- **ローカルMaven:** [SDKリポジトリ](https://github.com/opentesterapp/opentester-android-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. クライアントを初期化する {#3-initialize-the-client}

アプリIDとドメインを実際の値に置き換えます。`apiBaseUrl`と`webBaseUrl`はパスを含まないオリジンです。**SDKの`apiBaseUrl`に`/api/v1`を追加しないでください。** ホストされたサービスでは`https://api.opentester.app`と`https://opentester.app`を使います。

```kotlin
// 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`に登録し、[認証ガイド](/ja/sdk/authentication)のコールバックActivityとApp Linksを設定します。

## 4. ログインして報告を送信する {#4-sign-in-and-submit-a-report}

Activityのメインスレッドからブラウザーを開きます。

```kotlin
val tester = (application as TesterApplication).tester
tester.authenticate(this)
```

コールバックを受信したら、コルーチンで`handleCallback(uri)`を呼びます。`AccessGrant`を受け取った後、認証済みの`tester`でバグを送信できます。

```kotlin
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は自動収集しません。

## 次のステップ {#next-steps}

- [ブラウザー認証](/ja/sdk/authentication): コールバックActivity、App Links、セッション。
- [バグと改善意見](/ja/sdk/feedback): 制限、再試行、エラー処理。
- [Kotlin APIリファレンス](/ja/sdk/reference): 関数とデータモデル。
- [トラブルシューティング](/ja/sdk/troubleshooting): エミュレーター接続と認証失敗。
