Android アプリケーションの導入¶
Android アプリケーションのメトリクスデータを収集し、可視化してアプリケーションパフォーマンスを分析します。
参照ガイド¶
- 初回導入: クイックスタート を参照してください。
- 本格導入: 本ドキュメントを読み進めてください。
- パラメータ詳細: SDK 初期化、RUM 設定、Log 設定、Trace 設定 を参照してください。
- 高度な機能: 「高度なシナリオ」グループの専用ページを参照してください。
- トラブルシューティング: トラブルシューティング を参照してください。
前提条件¶
注意
RUM Headless サービスが有効になっている場合、前提条件は自動的に設定されているため、アプリケーションを直接導入できます。
- DataKit をインストールする;
- RUM コレクター を設定する;
- DataKit をパブリックネットワークからアクセス可能にし、IP 地理情報データベースをインストールする ように設定する。
アプリケーションの導入¶
- RUM > アプリケーションを作成 > Android に移動します;
- アプリケーション名を入力します;
- アプリケーション ID を入力します;
-
アプリケーションの導入方法を選択します:
- パブリック DataWay: DataKit コレクターをインストールせずに RUM データを直接受信します。
- ローカル環境デプロイメント: 前提条件を満たした後に RUM データを受信します。
インストール¶
ソースコード: https://github.com/GuanceCloud/datakit-android
デモ: https://github.com/GuanceDemo/guance-app-demo
Gradle 設定¶
Plugin の導入¶
- プロジェクトルートの
build.gradleファイルにSDKのリモートリポジトリURLを追加します
//build.gradle
buildscript {
//...
repositories {
//...
//Plugin のリモートリポジトリURLを追加
maven {
url 'https://mvnrepo.guance.com/repository/maven-releases'
}
}
dependencies {
//...
//Plugin のプラグインを追加、AGP 7.4.2 以上、Gradle 7.2.0 以上が必要
classpath 'com.cloudcare.ft.mobile.sdk.tracker.plugin:ft-plugin:[latest_version]'
// AGP 7.4.2 未満の場合は、ft-plugin-legacy を使用してください
//classpath 'com.cloudcare.ft.mobile.sdk.tracker.plugin:ft-plugin-legacy:[latest_version]'
}
}
//setting.gradle
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
//Plugin のリモートリポジトリURLを追加
maven {
url('https://mvnrepo.guance.com/repository/maven-releases')
}
}
}
//build.gradle
plugins{
//Plugin のプラグインを追加、AGP 7.4.2 以上、Gradle 7.2.0 以上が必要
id 'com.cloudcare.ft.mobile.sdk.tracker.plugin' version '[latest_version]' apply false
// AGP 7.4.2 未満の場合は、ft-plugin-legacy を使用してください
//id 'com.cloudcare.ft.mobile.sdk.tracker.plugin.legacy' version '[latest_version]' apply false
}
- プロジェクトのメインモジュール
app/build.gradleファイルにPluginの使用を追加します
//app/build.gradle でプラグインを適用、設定がないと以下の自動収集機能に影響します。
//
// 1.RUM:アプリ起動、OkHttp リクエスト、WebView アクティビティ Activity/Fragment 遷移、クリックイベント
// 2.Log:Console Logcat
apply plugin: 'ft-plugin' //ft-plugin-legacy を使用している場合も、同じ設定を使用します
//オプション:必要に応じてプラグインパラメータを設定
FTExt {
//showLog = true
//asmVersion='asm7'
//ignorePackages=['com.ft','com/ft']
//knownWebViewClasses = ['com.your.CustomWebView']
}
プラグインパラメータはすべてオプションです。ほとんどのシナリオでは、apply plugin: 'ft-plugin' だけで十分です。プラグインの動作をデバッグしたり、インストゥルメンテーション範囲を制御したり、WebView 認識を手動で補完する場合にのみ、FTExt の設定を追加する必要があります。
| パラメータ名 | 型 | デフォルト値 | 説明 | 適用シナリオ |
|---|---|---|---|---|
| showLog | Boolean | false |
ft-plugin のビルドログを出力するかどうか。 |
プラグインの実行プロセスをデバッグしたり、インストゥルメンテーションが有効かどうかを確認する場合に有効にします。 |
| asmVersion | String | asm9 |
プラグインが使用する ASM バージョンを指定します。asm7 ~ asm9 から選択可能。 |
プロジェクト内の他のバイトコード処理プラグインとの互換性が必要な場合に調整します。 |
| ignorePackages | String[] | 空 | ASM インストゥルメンテーションを実行しないパッケージパスを設定します。パス区切りには . または / を使用できます。 |
特定のビジネスパッケージ、サードパーティパッケージ、または他のプラグインと競合するコードをスキップする必要がある場合に使用します。 |
| knownWebViewClasses | String[] | 空 | WebView として認識する必要があるカスタムクラスを手動で宣言します。 | カスタム WebView の継承階層が複雑で自動認識が機能しない場合に使用します。 |
knownWebViewClassesは自動認識が失敗した場合にのみ設定が必要です。関連するトラブルシューティング方法はカスタム WebView の自動収集が機能しない場合を参照してください。
SDK の導入¶
- プロジェクトルートの
build.gradleファイルにSDKのリモートリポジトリURLを追加します
- プロジェクトのメインモジュール
app/build.gradleファイルにSDKの依存関係を追加します
//app/build.gradle
dependencies {
//SDK の依存関係を追加
implementation 'com.cloudcare.ft.mobile.sdk.tracker.agent:ft-sdk:[latest_version]'
//ネイティブ層のクラッシュ情報をキャプチャするための依存関係、ft-sdk と併用する必要があり、単独では使用できません
implementation 'com.cloudcare.ft.mobile.sdk.tracker.agent:ft-native:[latest_version]'
// JSON シリアライズ
implementation 'com.google.code.gson:gson:2.8.+'
//オプション、ネットワークリクエストの自動収集とリンクの自動開始に必要、最低 3.12.+ 以上と互換性あり
implementation 'com.squareup.okhttp3:okhttp:4.+'
}
最新バージョンは上記の
ft-sdk、ft-plugin、ft-nativeのバージョン名を参照してください。
Application 設定¶
最適な SDK 初期化位置は Application の onCreate メソッド内です。アプリケーションにまだ Application が作成されていない場合は、作成して AndroidManifest.xml で宣言する必要があります。サンプルはこちらを参照してください。
R8 / Proguard 難読化設定¶
ft-sdk 1.6.15 より前のバージョンを使用しており、android.buildTypes で minifyEnabled = true を設定する必要がある場合は、以下の設定を有効にしてください:
-dontwarn com.ft.sdk.**
### ft-sdk ライブラリ
-keep class com.ft.sdk.**{*;}
### ft-native ライブラリ
-keep class ftnative.*{*;}
### Action 取得時に action_name のクラス名が難読化されるのを防ぐ ###
-keepnames class * extends android.view.View
-keepnames class * extends android.view.MenuItem
```
初期化について¶
最小限の初期化例はクイックスタートを参照してください。
完全な FTSDKConfig パラメータの説明はSDK 初期化を参照してください。
詳細設定¶
高度なシナリオ¶
- カスタムタグ
- カスタム収集ルール
- データ収集のマスキング
- WebView モニタリング
- 動的設定と動的アドレス更新
- シンボルファイルのアップロード
- プライバシーと権限の説明
- Content Provider 設定
- 手動互換導入
Plugin AOP の無視¶
Plugin AOP のオーバーライドメソッドに @IgnoreAOP を追加して、ASM 挿入を無視します。バッチで無視する必要がある場合は、ft-plugin の FTExt 内の ignorePackages を使用して無視します。
```java View.setOnClickListener(new View.OnClickListener() { @Override @IgnoreAOP public void onClick(View v) {
}
}); ```
```kotlin View.setOnClickListener @IgnoreAOP {
} ```
よくある質問¶
グローバル変数を追加してフィールドの競合を回避する¶
カスタムフィールドと SDK データの競合を避けるために、タグ名に プロジェクトの略称 のプレフィックスを追加することを推奨します。例えば custom_tag_name などです。プロジェクトで使用する key 値はソースコードで確認できます。SDK のグローバル変数に RUM や Log と同じ変数が存在する場合、RUM や Log が SDK のグローバル変数を上書きします。
SDK 互換性¶
マーケットのプライバシー審査への対応¶
プライバシーと権限の説明 を参照してください。
サードパーティフレームワーク¶
flutter、react-native、uni-app、unity では、上記のネイティブ Android と同様の遅延初期化方式を採用することで、アプリマーケットのプライバシー審査に対応できます。
Jetpack Compose サポート¶
現在、Compose コンポーネントで生成されたページの自動収集は暫定的にサポートされていませんが、手動で Action や View のカスタムインターフェースを使用して、クリックイベントやページ遷移イベントを追跡できます。こちらを参照してください。