このページでは、いくつかの一般的な Android インストゥルメンテーションの問題を解決するための手順とヒントについて説明します。
エージェントのアップグレード後の Dex エラー
Gradle を使用してアプリケーションを構築し、モバイルエージェントのアップグレード後に Dex エラーが発生した場合は、Gradle キャッシュをクリアする必要がある可能性があります。
Android Studio の使用
Android Studio を使用してキャッシュをクリアするには、次の手順を実行します。
- [Build] > [Clean Project.] を選択します。
- [ File] > [Invalidate Caches.] を選択します。
コマンドラインの使用
コマンドラインを使用してキャッシュをクリアするには、次の手順を実行します。
Gradle を停止します。
また、依存関係を更新する必要がある場合もあります。
$ gradlew --refresh-dependencies
BASH
Splunk AppDynamics のキャッシュされているイメージを削除してみることもできます。
イメージを検索します。
$ find ~/.gradle/caches -name com.appdynamics
CODE
サブレポートを削除する。
$ find ~/.gradle/caches -name com.appdynamics -print0 | xargs -0 rm -r
CODE
インストゥルメンテーションが無効にした後に実行されているように見える
Gradle フラグ enabledForDebugBuilds
を使用して Android でインストゥルメンテーションを無効にしたが、インストゥルメンテーション タスクがまだ実行されている場合、これは Transform API が原因です。
Android Gradle プラグイン 1.5.0 では、Android エージェントがバイトコード注入を実行するために使用する Transform API が導入されました。Transform API の制限により、インストゥルメンテーションが無効になっている場合でも、transformClassesWithAppDynamicsForDebug
タスクは Gradle タスクログに表示されます。実際にはインストゥルメント化していないことを確認するには、--info
フラグを使用して gradle
を実行します。
次のログが表示されます。
カスタムのデフォルトの検出されていない例外ハンドラを使用した後にクラッシュが報告されない
例外ハンドラをインストールしてから Android エージェントを起動します。検出されていない例外は、エージェントによって処理されると、最初にクラッシュレポートを保存してから例外ハンドラを呼び出します。
ネットワークリクエストが報告されていません
サポートされているネットワーキングライブラリのリストを参照してください。ライブラリがリストにない場合は、常にこれらのネットワークリクエストを手動で報告できます。
debuggable
属性を持つビルドでは、ビルド速度を向上させるために自動インストゥルメンテーション(enableInstrumentation
ビルド属性)が無効になっています。これらのビルドに対して自動インストゥルメンテーションを有効にすることはできません。Android エージェント 20.5.0 ~ 20.7.0 を使用するデバッグ可能なビルドは、ネットワーク要求を自動インストゥルメント化しません。
クラスのインストゥルメント化を除外する
- excludeClasses
プラグインバージョンとは別のランタイムバージョンを適用する
- dependencies.compile 'com.appdynamics:appdynamics-runtime:4.5.+'
adeum.dependencyInjection.enabled = false