Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

sentry-android-sdk

Android向けのSentry SDKを完全にセットアップします。「AndroidにSentryを追加したい」「sentry-androidをインストールしたい」「AndroidアプリにSentryを設定したい」など、エラー監視・トレーシング・プロファイリング・セッションリプレイ・ログ収集の導入を求められた際に使用します。KotlinおよびJavaのコードベースに対応しています。

description の原文を見る

Full Sentry SDK setup for Android. Use when asked to "add Sentry to Android", "install sentry-android", "setup Sentry in Android", or configure error monitoring, tracing, profiling, session replay, or logging for Android applications. Supports Kotlin and Java codebases.

SKILL.md 本文

All Skills > SDK Setup > Android SDK

Sentry Android SDK

Androidプロジェクトをスキャンし、完全なSentry設定を通じてガイドするオピニオンのあるウィザード — エラー監視、トレーシング、プロファイリング、セッションリプレイ、ロギング、その他の機能。

このスキルを呼び出すとき

  • ユーザーが「Add Sentry to Android」または「set up Sentry」をAndroidアプリで実行するよう求める
  • ユーザーがAndroidでエラー監視、クラッシュ報告、ANR検出、トレーシング、プロファイリング、セッションリプレイ、またはロギングを希望している
  • ユーザーが sentry-androidio.sentry:sentry-android、モバイルクラッシュ追跡、またはKotlin/Java AndroidのSentryを言及している
  • ユーザーがネイティブ(NDK)クラッシュ、アプリケーション応答なし(ANR)イベント、またはアプリケーション起動パフォーマンスを監視したい

注記: 以下のSDKバージョンとAPIは、執筆時点でのSentryドキュメント(io.sentry:sentry-android:8.33.0、Gradleプラグイン6.1.0)を反映しています。 実装前にdocs.sentry.io/platforms/android/に対して必ず確認してください。


フェーズ1: 検出

推奨を行う前に、プロジェクトを理解するために以下のコマンドを実行してください:

# プロジェクト構造とビルドシステムを検出
ls build.gradle build.gradle.kts settings.gradle settings.gradle.kts 2>/dev/null

# AGPバージョンと既存のSentryを確認
grep -r '"com.android.application"' build.gradle* app/build.gradle* 2>/dev/null | head -3
grep -ri sentry build.gradle* app/build.gradle* 2>/dev/null | head -10

# アプリレベルのビルドファイル(GroovyかKTS)を確認
ls app/build.gradle app/build.gradle.kts 2>/dev/null

# Gradleバージョンカタログを検出(libs.versions.toml) — 最新のAGPプロジェクト
ls gradle/libs.versions.toml 2>/dev/null

# バージョンカタログの既存Sentryエントリを確認
grep -iE 'sentry|io\.sentry' gradle/libs.versions.toml 2>/dev/null | head -10

# ビルドファイルがカタログを参照しているか確認(alias/libs.*の使用)
grep -E 'alias\(libs\.|libs\.[a-zA-Z]' build.gradle build.gradle.kts app/build.gradle app/build.gradle.kts 2>/dev/null | head -5

# KotlinかJavaを検出
find app/src/main -name "*.kt" 2>/dev/null | head -3
find app/src/main -name "*.java" 2>/dev/null | head -3

# minSdk、targetSdkを確認
grep -E 'minSdk|targetSdk|compileSdk|minSdkVersion|targetSdkVersion' app/build.gradle app/build.gradle.kts 2>/dev/null | head -6

# Jetpack Composeを検出
grep -E 'compose|androidx.compose' app/build.gradle app/build.gradle.kts 2>/dev/null | head -5

# OkHttp(人気のあるHTTPクライアント — 専用統合がある)を検出
grep -E 'okhttp|retrofit' app/build.gradle app/build.gradle.kts 2>/dev/null | head -3

# RoomまたはSQLiteを検出
grep -E 'androidx.room|androidx.sqlite' app/build.gradle app/build.gradle.kts 2>/dev/null | head -3

# Timber(ロギングライブラリ)を検出
grep -E 'timber' app/build.gradle app/build.gradle.kts 2>/dev/null | head -3

# Jetpack Navigationを検出
grep -E 'androidx.navigation' app/build.gradle app/build.gradle.kts 2>/dev/null | head -3

# Apollo(GraphQL)を検出
grep -E 'apollo' app/build.gradle app/build.gradle.kts 2>/dev/null | head -3

# 既存のSentry初期化を確認
grep -r "SentryAndroid.init\|io.sentry.Sentry" app/src/ 2>/dev/null | head -5

# Applicationクラスを確認
find app/src/main -name "*.kt" -o -name "*.java" 2>/dev/null | xargs grep -l "Application()" 2>/dev/null | head -3

# 隣接するバックエンド(クロスリンク用)
ls ../backend ../server ../api 2>/dev/null
find .. -maxdepth 2 \( -name "go.mod" -o -name "requirements.txt" -o -name "Gemfile" \) 2>/dev/null | grep -v node_modules | head -5

確認すること:

質問影響
build.gradle.ktsが存在しますか?すべての例でKotlin DSL構文を使用してください
gradle/libs.versions.tomlが存在しますか?Sentryをバージョンカタログに追加し、ビルドファイルでlibs.*を通じて参照してください
カタログはすでにsentryエントリを持っていますか?既存のバージョン参照を再利用してください。重複またはハードコードしないでください
minSdk < 26ですか?セッションリプレイはAPI 26以上が必要です — それ以下では静黙的なノーオプです
Composeが検出されましたか?sentry-compose-androidとCompose固有のマスキングを推奨してください
OkHttpが存在しますか?sentry-okhttpインターセプターまたはGradleプラグインバイトコード自動計装を推奨してください
Room/SQLiteが存在しますか?sentry-android-sqliteまたはプラグインバイトコード計装を推奨してください
Timberが存在しますか?sentry-android-timber統合を推奨してください
Jetpack Navigation?画面追跡のためにsentry-android-navigationを推奨してください
すでにSentryAndroid.init()がありますか?インストールをスキップし、機能設定に進んでください
Applicationサブクラスが存在しますか?ここがSentryAndroid.init()が行く場所です

フェーズ2: 推奨

見つけたものに基づいて具体的な推奨を提示してください。オープンエンドな質問をしないでください — 提案をリードしてください:

推奨(コアカバレッジ — 常にこれらを設定してください):

  • エラー監視 — キャッチされない例外、ANR、ネイティブNDKクラッシュを自動的にキャプチャします
  • トレーシング — Activity生ライフサイクル、アプリ起動、HTTPリクエスト、データベースクエリを自動計装します
  • セッションリプレイ — デバッグのためのスクリーンキャプチャとユーザーインタラクションを記録します(API 26+)

オプション(観察性の向上):

  • プロファイリング — 継続的UIプロファイリング(推奨)またはトランザクションベースのサンプリング
  • ロギングSentry.logger()を通じた構造化ログ、オプションのTimberブリッジ
  • ユーザーフィードバック — アプリ内からのユーザー送信バグ報告を収集

推奨ロジック:

機能推奨するとき...
エラー監視常に — いかなるAndroidアプリの交渉不可能なベースライン
トレーシングAndroid用常に — アプリ起動時間、Activity生ライフサイクル、ネットワークレイテンシが重要
セッションリプレイAPI 26+のユーザー向けプロダクションアプリ、ユーザー問題の視覚的なデバッグ
プロファイリングパフォーマンス敏感なアプリ、起動時間調査、プロダクションパフォーマンス分析
ロギングアプリが構造化ロギングを使用するか、Sentryでログ-トレース相関が必要な場合
ユーザーフィードバックユーザー送信バグレポートが必要なベータまたはカスタマー向けアプリ

提案: 「[Kotlin/Java] Androidアプリ(minSdk X)の場合、エラー監視+トレーシング+セッションリプレイの設定をお勧めします。プロファイリングとロギングも追加したいですか?」


フェーズ3: ガイド

セットアップパスを決定してください

プロジェクトタイプ推奨セットアップ複雑さ
新規プロジェクト、既存のSentryなしGradleプラグイン(推奨)低 — プラグインがほとんどの設定を処理
既存プロジェクト、SentryなしGradleプラグインまたは手動初期化中 — 依存関係追加+Applicationクラス
手動完全制御Application内のSentryAndroid.init()中 — 明示的な設定、最も柔軟

オプション1: ウィザード(推奨)

このウィザードは自分自身で実行する必要があります — ウィザードはログイン用のブラウザを開き、 エージェントが処理できない対話的入力が必要です。 ターミナルにコピー-ペーストしてください:

npx @sentry/wizard@latest -i android

ログイン、org/プロジェクト選択、Gradleプラグイン設定、依存関係インストール、DSN設定、 ProGuard/R8マッピングアップロードを処理します。

完了後、戻ってきて検証にスキップしてください。

ユーザーがウィザードをスキップする場合、下記のオプション2(手動セットアップ)で進めてください。


オプション2: 手動セットアップ

Gradleバージョンカタログ(gradle/libs.versions.toml)の使用

フェーズ1でgradle/libs.versions.tomlが検出された場合、最初にSentryをカタログに追加し、次にビルドファイルから参照してください。これはバージョンを集約し、最新のAGPプロジェクト規則に適合させます。

ステップ1 — gradle/libs.versions.tomlにエントリを追加

[versions]
sentry = "8.33.0"
sentryGradlePlugin = "6.1.0"

[libraries]
sentry-android = { module = "io.sentry:sentry-android", version.ref = "sentry" }
sentry-bom = { module = "io.sentry:sentry-bom", version.ref = "sentry" }
# オプション統合 — プロジェクトが使用するもののみ追加:
sentry-android-timber = { module = "io.sentry:sentry-android-timber" }
sentry-android-fragment = { module = "io.sentry:sentry-android-fragment" }
sentry-compose-android = { module = "io.sentry:sentry-compose-android" }
sentry-android-navigation = { module = "io.sentry:sentry-android-navigation" }
sentry-okhttp = { module = "io.sentry:sentry-okhttp" }
sentry-android-sqlite = { module = "io.sentry:sentry-android-sqlite" }
sentry-kotlin-extensions = { module = "io.sentry:sentry-kotlin-extensions" }

[plugins]
sentry-android-gradle = { id = "io.sentry.android.gradle", version.ref = "sentryGradlePlugin" }

注記: オプション統合エントリはversion.refを省略します — それらのバージョンは解決時にBOMから来ます。sentry-bomのみがバージョン参照を必要とします。 カタログがすでにsentryバージョンを定義している場合、重複エントリを追加する代わりに再利用してください。

ステップ2 — カタログをbuild.gradle[.kts]から参照

プロジェクトレベルbuild.gradle.kts:

plugins {
    alias(libs.plugins.sentry.android.gradle) apply false
}

アプリレベルapp/build.gradle.kts:

plugins {
    id("com.android.application")
    alias(libs.plugins.sentry.android.gradle)
}

dependencies {
    implementation(platform(libs.sentry.bom))
    implementation(libs.sentry.android)
    // implementation(libs.sentry.okhttp)
    // implementation(libs.sentry.compose.android)
}

Groovy DSL(app/build.gradle)等価:

plugins {
    id "com.android.application"
    alias libs.plugins.sentry.android.gradle
}

dependencies {
    implementation platform(libs.sentry.bom)
    implementation libs.sentry.android
}

次に、以下のパスA、ステップ2からsentry {}設定ブロックを続行してください。セットアップの残り(Applicationクラス初期化、マニフェスト登録、検証)は同一です。


パスA: Gradleプラグイン(推奨)

Sentry Gradleプラグインが最も簡単なセットアップパスです。以下を行います:

  • リリースビルド時にProGuard/R8マッピングファイルを自動的にアップロード
  • ソースコンテキストをスタックフレームに注入
  • バイトコード変換(ゼロソース変更)を通じてOkHttp、Room/SQLite、ファイルI/O、Composeナビゲーション、android.util.Logをオプションで計装

ステップ1 — プラグインをbuild.gradle[.kts](プロジェクトレベル)に追加

Groovy DSL(build.gradle):

plugins {
    id "io.sentry.android.gradle" version "6.1.0" apply false
}

Kotlin DSL(build.gradle.kts):

plugins {
    id("io.sentry.android.gradle") version "6.1.0" apply false
}

ステップ2 — プラグインを適用してプラグインを追加し、app/build.gradle[.kts]に依存関係を追加

Groovy DSL:

plugins {
    id "com.android.application"
    id "io.sentry.android.gradle"
}

android {
    // ...
}

dependencies {
    // sentryモジュール全体で一貫したバージョンのためにBOMを使用
    implementation platform("io.sentry:sentry-bom:8.33.0")
    implementation "io.sentry:sentry-android"

    // オプション統合(関連するものを追加):
    // implementation "io.sentry:sentry-android-timber"     // Timberブリッジ
    // implementation "io.sentry:sentry-android-fragment"   // Fragment生ライフサイクル追跡
    // implementation "io.sentry:sentry-compose-android"    // Jetpack Composeサポート
    // implementation "io.sentry:sentry-android-navigation"  // Jetpack Navigation
    // implementation "io.sentry:sentry-okhttp"             // OkHttpインターセプター
    // implementation "io.sentry:sentry-android-sqlite"     // Room/SQLite追跡
    // implementation "io.sentry:sentry-kotlin-extensions"  // コルーチンコンテキスト伝播
}

sentry {
    org = "YOUR_ORG_SLUG"
    projectName = "YOUR_PROJECT_SLUG"
    authToken = System.getenv("SENTRY_AUTH_TOKEN")

    // バイトコード変換を通じて自動計装を有効化(ソース変更は不要)
    tracingInstrumentation {
        enabled = true
        features = [InstrumentationFeature.DATABASE, InstrumentationFeature.FILE_IO,
                    InstrumentationFeature.OKHTTP, InstrumentationFeature.COMPOSE]
    }

    // リリース時にProGuardマッピングとソースコンテキストをアップロード
    autoUploadProguardMapping = true
    includeSourceContext = true
}

Kotlin DSL(app/build.gradle.kts):

plugins {
    id("com.android.application")
    id("io.sentry.android.gradle")
}

dependencies {
    implementation(platform("io.sentry:sentry-bom:8.33.0"))
    implementation("io.sentry:sentry-android")

    // オプション統合:
    // implementation("io.sentry:sentry-android-timber")
    // implementation("io.sentry:sentry-android-fragment")
    // implementation("io.sentry:sentry-compose-android")
    // implementation("io.sentry:sentry-android-navigation")
    // implementation("io.sentry:sentry-okhttp")
    // implementation("io.sentry:sentry-android-sqlite")
    // implementation("io.sentry:sentry-kotlin-extensions")
}

sentry {
    org = "YOUR_ORG_SLUG"
    projectName = "YOUR_PROJECT_SLUG"
    authToken = System.getenv("SENTRY_AUTH_TOKEN")

    tracingInstrumentation {
        enabled = true
        features = setOf(
            InstrumentationFeature.DATABASE,
            InstrumentationFeature.FILE_IO,
            InstrumentationFeature.OKHTTP,
            InstrumentationFeature.COMPOSE,
        )
    }

    autoUploadProguardMapping = true
    includeSourceContext = true
}

ステップ3 — Applicationクラス内でSentryを初期化

Applicationサブクラスがない場合は、作成してください:

// MyApplication.kt
import android.app.Application
import io.sentry.SentryLevel
import io.sentry.android.core.SentryAndroid
import io.sentry.android.replay.SentryReplayOptions

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        SentryAndroid.init(this) { options ->
            options.dsn = "YOUR_SENTRY_DSN"

            // トレーシング — 高トラフィックプロダクションでは0.1–0.2に低下させる
            options.tracesSampleRate = 1.0

            // プロファイリング — 継続的UIプロファイリング(推奨、SDK ≥ 8.7.0)を使用
            options.profileSessionSampleRate = 1.0

            // セッションリプレイ(API 26+のみ、API 26以下では静黙的ノーオプ)
            options.sessionReplay.sessionSampleRate = 0.1    // すべてのセッションの10%
            options.sessionReplay.onErrorSampleRate = 1.0    // エラーの100%

            // 構造化ロギング
            options.logs.isEnabled = true

            // 環境
            options.environment = BuildConfig.BUILD_TYPE
        }
    }
}

Javaと同等:

// MyApplication.java
import android.app.Application;
import io.sentry.android.core.SentryAndroid;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        SentryAndroid.init(this, options -> {
            options.setDsn("YOUR_SENTRY_DSN");
            options.setTracesSampleRate(1.0);
            options.setProfileSessionSampleRate(1.0);
            options.getSessionReplay().setSessionSampleRate(0.1);
            options.getSessionReplay().setOnErrorSampleRate(1.0);
            options.getLogs().setEnabled(true);
            options.setEnvironment(BuildConfig.BUILD_TYPE);
        });
    }
}

ステップ4 — ApplicationをAndroidManifest.xmlに登録

<application
    android:name=".MyApplication"
    ... >

パスB: 手動セットアップ(Gradleプラグインなし)

Gradleプラグインが使用できない場合(例えば、非標準ビルドセットアップ)にこれを使用してください。

ステップ1 — app/build.gradle[.kts]に依存関係を追加

dependencies {
    implementation(platform("io.sentry:sentry-bom:8.33.0"))
    implementation("io.sentry:sentry-android")
}

ステップ2 — Applicationクラスで初期化 (パスA、ステップ3と同じ)

ステップ3 — ProGuard/R8を手動で設定

Sentry SDKはProGuardルールファイルを自動的に出荷します。手動マッピングアップロードの場合、sentry-cliをインストールして、CIに以下を追加してください:

sentry-cli releases files "my-app@1.0.0+42" upload-proguard \
  --org YOUR_ORG --project YOUR_PROJECT \
  app/build/outputs/mapping/release/mapping.txt

クイックリファレンス: 完全な機能SentryAndroid.init()

SentryAndroid.init(this) { options ->
    options.dsn = "YOUR_SENTRY_DSN"

    // 環境とリリース
    options.environment = BuildConfig.BUILD_TYPE     // "debug", "release"など
    options.release = "${BuildConfig.APPLICATION_ID}@${BuildConfig.VERSION_NAME}+${BuildConfig.VERSION_CODE}"

    // トレーシング — 開発で100%をサンプリング、本番で10–20%に低下
    options.tracesSampleRate = 1.0

    // 継続的UIプロファイリング(トランザクションベースより推奨)
    options.profileSessionSampleRate = 1.0

    // セッションリプレイ(API 26+、API 21–25では静黙的ノーオプ)
    options.sessionReplay.sessionSampleRate = 0.1
    options.sessionReplay.onErrorSampleRate = 1.0
    options.sessionReplay.maskAllText = true         // プライバシーのためテキストをマスク
    options.sessionReplay.maskAllImages = true       // プライバシーのために画像をマスク

    // 構造化ロギング
    options.logs.isEnabled = true

    // エラーエンリッチメント
    options.isAttachScreenshot = true                // エラー時にスクリーンショットをキャプチャ
    options.isAttachViewHierarchy = true             // JSON表示階層をアタッチメントとして追加

    // ANR検出(5sデフォルト、ウォッチドッグ+ApplicationExitInfo API 30+)
    options.isAnrEnabled = true

    // NDKネイティブクラッシュ処理(デフォルトで有効)
    options.isEnableNdk = true

    // PIIを送信: IPアドレス、ユーザーデータ
    options.sendDefaultPii = true

    // トレース伝播(バックエンド分散トレーシング)
    options.tracePropagationTargets = listOf("api.yourapp.com", ".*\\.yourapp\\.com")

    // 詳細ログ — 本番では無効化
    options.isDebug = BuildConfig.DEBUG
}

合意した各機能について

ウォークスルー機能を1つずつ。各機能の参照ファイルをロード、ステップを正確に従う、移動前に検証してください:

機能リファレンスロードするとき...
エラー監視${SKILL_ROOT}/references/error-monitoring.md常に(ベースライン)
トレーシング & パフォーマンス${SKILL_ROOT}/references/tracing.mdAndroid用常に(Activity生ライフサイクル、ネットワーク)
プロファイリング${SKILL_ROOT}/references/profiling.mdパフォーマンス敏感なプロダクションアプリ
セッションリプレイ${SKILL_ROOT}/references/session-replay.mdユーザー向けアプリ(API 26+)
ロギング${SKILL_ROOT}/references/logging.md構造化ロギング / ログ-トレース相関
メトリクス${SKILL_ROOT}/references/metrics.mdカスタムメトリクス追跡(SDK ≥ 8.30.0)
Crons${SKILL_ROOT}/references/crons.mdスケジュール済みジョブ、WorkManager check-ins

各機能について: ${SKILL_ROOT}/references/<feature>.mdを読む、ステップを正確に従う、それが機能することを確認してください。


統合リファレンス

ビルトイン(自動有効)

SentryAndroid.init()が呼び出されたときに、これらの統合は自動的にアクティベートします:

統合行うこと
UncaughtExceptionHandlerIntegrationすべてのキャッチされないJava/Kotlin例外をキャプチャ
AnrIntegrationウォッチドッグスレッド(5s)+ApplicationExitInfo(API 30+)を通じたANR検出
NdkIntegrationsentry-nativeを通じたネイティブ(C/C++)クラッシュキャプチャ
ActivityLifecycleIntegrationTTID/TTFDのためのActivity create/resume/pauseを自動計装
AppStartMetricsコールド/ウォーム/ホットアプリ起動時間を測定
NetworkBreadcrumbsIntegration接続性変更をパンくずとして記録
SystemEventsBreadcrumbsIntegrationバッテリー、画面オン/オフ等を記録
AppLifecycleIntegrationフォアグラウンド/バックグラウンド遷移を記録
UserInteractionIntegrationタップ、スワイプ、入力イベント用パンくず
CurrentActivityIntegrationアクティブActivityをコンテキスト用に追跡

オプション統合

成果物をdependencies {}ブロックに追加してください(バージョンはBOMで管理):

統合成果物追加するとき
Timberio.sentry:sentry-android-timberアプリがロギング用にTimberを使用
Fragmentio.sentry:sentry-android-fragmentアプリがJetpack Fragmentを使用(生ライフサイクル追跡)
Composeio.sentry:sentry-compose-androidアプリがJetpack Composeを使用(ナビゲーション+マスキング)
Navigationio.sentry:sentry-android-navigationアプリがJetpack Navigationコンポーネントを使用
OkHttpio.sentry:sentry-okhttpアプリがOkHttpまたはRetrofitを使用
Room/SQLiteio.sentry:sentry-android-sqliteアプリがRoomまたは生SQLiteを使用
Apollo 3io.sentry:sentry-apollo-3アプリがApollo GraphQL v3を使用
Apollo 4io.sentry:sentry-apollo-4アプリがApollo GraphQL v4を使用
Kotlin Extensionsio.sentry:sentry-kotlin-extensionsKotlinコルーチンコンテキスト伝播
Ktor Clientio.sentry:sentry-ktor-clientアプリがKtor HTTPクライアントを使用
LaunchDarklyio.sentry:sentry-launchdarkly-androidアプリがLaunchDarklyフィーチャーフラグを使用

Gradleプラグインバイトコード計装

プラグインは計装を自動的に注入できます(ソース変更なし):

機能計装有効化
DATABASERoom DAO、SupportSQLiteOpenHelpertracingInstrumentation.features
FILE_IOFileInputStream、FileOutputStreamtracingInstrumentation.features
OKHTTPOkHttpClient.Builder自動計装tracingInstrumentation.features
COMPOSENavHostController自動計装tracingInstrumentation.features
LOGCATandroid.util.LogキャプチャtracingInstrumentation.features

設定リファレンス

コアSentryOptions(via SentryAndroid.init)

オプションタイプデフォルト目的
dsnString必須。 プロジェクトDSN; 空の場合SDKは静黙的に無効化
environmentString例えば、"production""staging"。Env: SENTRY_ENVIRONMENT
releaseStringアプリバージョン、例えば、"my-app@1.0.0+42"。Env: SENTRY_RELEASE
distStringビルドバリアント/配布識別子
sendDefaultPiiBooleanfalsePIIを含める: IPアドレス、ユーザーデータ
sampleRateDouble1.0エラーイベントサンプリング(0.0–1.0)
maxBreadcrumbsInt100イベントあたりの最大パンくず
isAttachStacktraceBooleantrueメッセージイベントに自動スタックトレース追加
isAttachScreenshotBooleanfalseエラー時にスクリーンショットをキャプチャ
isAttachViewHierarchyBooleanfalseJSON表示階層をアタッチメントとして追加
isDebugBooleanfalse詳細SDKアウトプット。本番では絶対に使用しないでください
isEnabledBooleantrueSDK全体を無効化(テスト用など)
beforeSendSentryOptions.BeforeSendCallback送信前にエラーイベントを変更またはドロップ
beforeBreadcrumbSentryOptions.BeforeBreadcrumbCallbackストレージ前にパンくずをフィルタ

トレーシングオプション

オプションタイプデフォルト目的
tracesSampleRateDouble0.0トランザクションサンプルレート(0–1)。開発では1.0を使用
tracesSamplerTracesSamplerCallbackトランザクションごとのサンプリング、tracesSampleRateを上書き
tracePropagationTargetsList<String>[".*"]sentry-tracebaggageヘッダを受け取るホスト/URL
isEnableAutoActivityLifecycleTracingBooleantrueActivity生ライフサイクル自動計装
isEnableTimeToFullDisplayTracingBooleanfalseTTFDスパン(Sentry.reportFullyDisplayed()が必要)
isEnableUserInteractionTracingBooleanfalseユーザージェスチャ自動計装をトランザクションとして

プロファイリングオプション

オプションタイプデフォルト目的
profileSessionSampleRateDouble0.0継続的プロファイリングサンプルレート(SDK ≥ 8.7.0、API 22+)
profilesSampleRateDouble0.0レガシートランザクションプロファイリングレート(相互排他的)
isProfilingStartOnAppStartBooleanfalseアプリ起動時プロファイリングセッション自動開始

ANRオプション

オプションタイプデフォルト目的
isAnrEnabledBooleantrueANRウォッチドッグスレッド有効化
anrTimeoutIntervalMillisLong5000ANR報告前のミリ秒
isAnrReportInDebugBooleanfalseデバッグビルドでANRを報告(デバッガーで騒々しい)

NDKオプション

オプションタイプデフォルト目的
isEnableNdkBooleantruesentry-native経由のネイティブクラッシュキャプチャ有効化
isEnableScopeSyncBooleantrueJava scope(ユーザー、タグ)をNDK層に同期
isEnableTombstoneFetchJobBooleantrueNDKカタコンボファイルをエンリッチメント用にフェッチ

セッションリプレイオプション(options.sessionReplay)

オプションタイプデフォルト目的
sessionSampleRateDouble0.0すべてのセッション記録の割合
onErrorSampleRateDouble0.0エラーセッション記録の割合
maskAllTextBooleantrueリプレイのすべてのテキストをマスク
maskAllImagesBooleantrueリプレイのすべての画像をマスク
qualitySentryReplayQualityMEDIUMビデオ品質: LOWMEDIUMHIGH

ロギングオプション(options.logs)

オプションタイプデフォルト目的
isEnabledBooleanfalseSentry.logger() API有効化(SDK ≥ 8.12.0)
setBeforeSendBeforeSendLogCallback送信前にログエントリをフィルタ/変更

環境変数

変数目的注記
SENTRY_DSNData Source NameCIで設定、SDK初期化時に環境から読み込み
SENTRY_AUTH_TOKENProGuardマッピングとソースコンテキストをアップロードコミットしないでください — CI/CDシークレットを使用
SENTRY_ORG組織スラッグGradleプラグインsentry.orgで使用
SENTRY_PROJECTプロジェクトスラッグGradleプラグインsentry.projectNameで使用
SENTRY_RELEASEリリース識別子options.releaseからフォールバック
SENTRY_ENVIRONMENT環境名options.environmentからフォールバック

AndroidManifest.xmlメタデータで、DSNと多くのオプションを設定することもできます:

<application>
    <meta-data android:name="io.sentry.dsn" android:value="YOUR_DSN" />
    <meta-data android:name="io.sentry.traces-sample-rate" android:value="1.0" />
    <meta-data android:name="io.sentry.environment" android:value="production" />
    <meta-data android:name="io.sentry.anr.enable" android:value="true" />
    <meta-data android:name="io.sentry.attach-screenshot" android:value="true" />
    <meta-data android:name="io.sentry.attach-view-hierarchy" android:value="true" />
</application>

⚠️ マニフェストメタデータは便利な代替案ですが、フルオプションセットをサポートしていません。複雑な設定(セッションリプレイ、プロファイリング、フック)については、SentryAndroid.init()を使用してください。


検証

セットアップ後、Sentryがイベントを受け取っていることを確認してください:

エラーキャプチャをテスト:

// ActivityまたはFragmentで
try {
    throw RuntimeException("Sentry Android SDK test")
} catch (e: Exception) {
    Sentry.captureException(e)
}

トレーシングをテスト:

val transaction = Sentry.startTransaction("test-task", "task")
val span = transaction.startChild("test-span", "description")
span.finish()
transaction.finish()

構造化ロギングをテスト(SDK ≥ 8.12.0):

Sentry.logger().info("Sentry logging test")
Sentry.logger().error("Error log test", Exception("test error"))

Sentryダッシュボードを確認:

  • Issues → テスト例外が数秒以内に表示される
  • Traces → 子スパン付きtest-taskトランザクションを探す
  • Replays → アプリインタラクション後のセッション記録が表示される(API 26+が必要)
  • Logs → ログタブの下に構造化ログエントリが表示される

何も表示されない場合:

  1. options.isDebug = trueを設定 — SDKがLogcatにログ出力
  2. DSNが正しく、Sentryプロジェクトに一致することを確認
  3. AndroidManifest.xmlandroid:nameとしてApplicationクラスが登録されていることを確認
  4. デバイス/エミュレーターがインターネット接続を持つことを確認
  5. NDKクラッシュ用に、isEnableNdk = true(デフォルト)を確認し、NDKサポートでビルドする

フェーズ4: クロスリンク

Androidセットアップ完了後、Sentryカバレッジが欠落しているバックエンドまたはウェブフロントエンドをチェックしてください:

# 隣接するバックエンドディレクトリ
ls ../backend ../server ../api 2>/dev/null
cat ../go.mod 2>/dev/null | head -3
cat ../requirements.txt ../pyproject.toml 2>/dev/null | head -5
cat ../Gemfile 2>/dev/null | head -3
ls ../backend/package.json ../server/package.json 2>/dev/null

# iOSカウンターパートアプリ
ls ../ios ../YourApp-iOS 2>/dev/null
find .. -maxdepth 3 -name "*.xcodeproj" 2>/dev/null | head -3

バックエンドまたは関連プラットフォームがSentryなしで存在する場合、一致するスキルを提案してください:

検出スキルを提案
Goバックエンド(go.mod)sentry-go-sdk
Pythonバックエンド(requirements.txtpyproject.toml)sentry-python-sdk
Rubyバックエンド(Gemfile)sentry-ruby-sdk
Node.jsバックエンド@sentry/nodedocs.sentry.io/platforms/javascript/guides/express/を参照
iOSアプリ(.xcodeproj)sentry-cocoa-sdk
React Native(react-native付きpackage.json)sentry-react-native-sdk
React / Next.jsウェブsentry-react-sdkまたはsentry-nextjs-sdk

分散トレーシングセットアップ — バックエンドスキルが追加される場合、AndroidでトレースコンテキストをAPI に伝播させるためにtracePropagationTargetsを設定してください:

options.tracePropagationTargets = listOf(
    "api.yourapp.com",
    ".*\\.yourapp\\.com"
)

これはSentryウォーターフォールビューの携帯トランザクションをバックエンドトレースにリンクします。


トラブルシューティング

問題ソリューション
イベントがSentryに表示されないisDebug = trueを設定、LogcatでSDKエラーを確認、DSNが正しく、プロジェクトに一致することを確認
SentryAndroid.init()が呼び出されないAndroidManifest.xmlandroid:name=".MyApplication"が設定されていることを確認、Applicationクラスが抽象化されない
Gradleプラグインが見つからないプロジェクトレベルbuild.gradle.ktsにプラグインを追加し、最初にapply falseを追加、バージョン6.1.0を確認
ProGuardマッピングがアップロードされないSENTRY_AUTH_TOKEN環境変数を設定、sentry {}ブロックでautoUploadProguardMapping = trueを確認
NDKクラッシュがキャプチャされないisEnableNdk = true(デフォルト)を確認、プロジェクトがandroid.ndkVersionでNDK設定を持つことを確認
デバッガーでANRが報告されるisAnrReportInDebug = false(デフォルト)を設定、ANRウォッチドッグはデバッガーがスレッドを一時停止するときに起動
セッションリプレイが記録されないAPI 26+が必要、sessionSampleRate > 0またはonErrorSampleRate > 0を確認、Logcatでリプレイエラーを確認
セッションリプレイに空白画面が表示されるPixelCopy(デフォルト)はハードウェアアクセラレーションが必要、SentryReplayOptions.screenshotQuality = CANVASを試す
リプレイマスキングがずれているtranslationX/YまたはclipToPadding=false付きビューはマスクをオフセット可能、github.com/getsentry/sentry-javaに報告
beforeSendが起動しないbeforeSendは管理(Java/Kotlin)イベントのみをインターセプト、NDKネイティブクラッシュはバイパス
OkHttpスパンが表示されないOkHttpClient にSentryOkHttpInterceptorを追加、またはGradleプラグインOKHTTPバイトコード計装を使用
スパンがトランザクションにアタッチされないトランザクション開始時にTransactionOptions().setBindToScope(true)を確認、子スパンはスコープルートを探す
トレーシングが記録されないtracesSampleRate > 0を確認、Activity計装はisEnableAutoActivityLifecycleTracing = true(デフォルト)が必要
継続的プロファイリングが機能しないSDK ≥ 8.7.0が必要、API 22+が必要、profileSessionSampleRate > 0を設定、profilesSampleRateも設定しない
両方のプロファイリングモードが設定されるprofilesSampleRateprofileSessionSampleRateは相互排他的 — 1つのみ使用
TTFDスパンが欠落しているisEnableTimeToFullDisplayTracing = trueを設定、画面準備時にSentry.reportFullyDisplayed()を呼び出す
Kotlinコルーチンスコープが失われるsentry-kotlin-extensions依存関係を追加、Sentry.cloneMainContext()を使用してトレースコンテキスト伝播
リリースビルドスタックトレースが読み取り不可能ProGuardマッピングがアップロードされない、GradleプラグインautoUploadProguardMapping = trueを確認、認証トークン設定
Sentryにソースコンテキストが表示されないsentry {}ブロックでincludeSourceContext = trueを有効化(Gradleプラグイン必須)
BOMバージョンの競合implementation(platform("io.sentry:sentry-bom:8.33.0"))を使用、他のすべてのio.sentry:*エントリからバージョンを省略
バージョンカタログエイリアスが未解決gradle/libs.versions.toml編集後、Gradleを同期、エイリアス名はTOMLで-、ビルドファイルで.を使用(例えば、sentry-androidlibs.sentry.android)
カタログにSentryバージョンが重複既存[versions] sentry = "..."エントリを再利用、第2のキーを追加しない、カタログが使用中の場合build.gradleでバージョンをハードコードしない
SENTRY_AUTH_TOKENが公開された認証トークンはビルド時のみ — SentryAndroid.init()に渡さないか、APKに組み込まない

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
getsentry
リポジトリ
getsentry/sentry-for-ai
ライセンス
MIT
最終更新
不明

Source: https://github.com/getsentry/sentry-for-ai / ライセンス: MIT

関連スキル

汎用その他⭐ リポ 1,982

superfluid

Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

by Jimmy-Holiday
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: getsentry · getsentry/sentry-for-ai · ライセンス: MIT