SDKのトラブルシューティング
エミュレーターで確認する
SDKリポジトリのサンプルアプリでローカルサーバーとSDKの流れを確認できます。ローカルの開発者コンソールでopentester-sample://callbackを登録し、テスターの参加を承認します。
Android SDKとJDKを用意して実行します。
cd opentester-android-sdk
./gradlew :opentester:testDebugUnitTest :sample:assembleDebug
adb install -r sample/build/outputs/apk/debug/sample-debug.apkadbがPATHにない場合はAndroid SDKのplatform-tools/adbを使います。サンプルの既定値はWebがhttp://10.0.2.2:3000、APIがhttp://10.0.2.2:4000です。APIの許可OriginにそのWebオリジンを含めます。
- コンソールのアプリIDを入力します。
- ブラウザーで承認済みのテスターアカウントにログインします。
- アプリ接続を承認してサンプルに戻ります。
- 権限確認とバグ・改善意見の送信を試します。
- 開発者コンソールで報告を確認します。
USB接続の実機では以下を実行し、http://localhost:3000とhttp://localhost:4000を使えます。
adb reverse tcp:3000 tcp:3000
adb reverse tcp:4000 tcp:4000ローカルHTTPとカスタムコールバックはdebug manifestでのみ許可します。配布アプリではHTTPS App Linksを設定してください。
ログイン画面は開くがアプリに戻らない
- コンソールのコールバック、
OpenTesterConfig.redirectUri、manifestのhost/pathを一致させます。 assetlinks.jsonのapplication IDと署名証明書がインストール済みアプリと一致するか確認します。- Activityを
exported="true"にし、VIEW、DEFAULT、BROWSABLEを宣言します。 - サンプルのカスタムschemeはローカル開発用です。本番ではHTTPSが必須です。
進行中のログインがない、またはstateが不正
ログインを開始したSDKインスタンスでコールバックを処理します。Applicationなどに保持し、プロセス終了後は再ログインします。
コールバックは一度だけ処理し、Intentのdataを消去します。createAuthenticationUri()を繰り返すとstateが置き換わります。コード交換のエラーやキャンセル後もログインからやり直します。
401または403が返る
| 応答 | 確認事項 |
|---|---|
401 | コードの期限切れ・使用済み、またはトークン期限切れ。再ログイン |
403 | 対象アプリの参加状態がapprovedか確認 |
端末ブラウザーとデスクトップではアカウントが異なる場合があります。所有者とテスターを混同しないでください。Google Group加入だけではSDK権限は付与されません。承認取り消し後の失敗は正常で、401と403はSDKのメモリ内セッションも削除します。
通信エラーや不正なレスポンス
apiBaseUrlに/api/v1を追加しないでください。webBaseUrlにはAPIではなくWebサイトを指定します。- エミュレーターから開発マシンには
10.0.2.2で接続します。 - ローカルHTTPには
allowInsecureLocalhost = trueとAndroidのdebug用通信設定の両方が必要です。任意のLAN HTTPアドレスは許可されません。 - プロキシによるリダイレクトやHTMLログイン画面への置き換えを確認します。SDKはリダイレクトを追いません。
接続タイムアウトは10秒、読み取りは15秒です。オフライン時の権限確認を成功として扱わないでください。
再試行すると同じ報告が返る
同じアプリ・テスター・clientRequestIdでは、内容が変わっても既存報告を返します。新規報告は新しいUUID、再試行は元のUUIDを使います。重複ができる場合は毎回BugReportやFeedbackReportを作り直していないか確認します。再試行を参照してください。
エラーが自動送信されない
テキスト送信にはsubmitBug()またはsubmitFeedback()を呼びます。未処理例外収集、自動クラッシュ報告、添付、セッション録画、オフラインキューは未実装です。
Mavenの依存関係が見つからない
app.opentester:android-sdk:0.1.0を使い、settings.gradle.ktsにmavenCentral()を追加します。Kotlinパッケージdev.opentester.sdkとMaven group IDは異なります。JitPackではhttps://jitpack.ioとcom.github.opentesterapp:opentester-android-sdk:v0.1.0を併せて指定します。
releaseビルドでSDKクラスが見つからない
debugImplementationはreleaseでは使えません。テスト用Activity、Application、manifestをsrc/debug/またはテストflavorのソースセットに置き、共通コードにはビルド別の実装を注入します。サンプルはSDK検証用で、一般公開用テンプレートではありません。