このページでは、いくつかの一般的な Android インストゥルメンテーションの問題を解決するための手順とヒントについて説明します。

エージェントのアップグレード後の Dex エラー

Gradle を使用してアプリケーションを構築し、モバイルエージェントのアップグレード後に Dex エラーが発生した場合は、Gradle キャッシュをクリアする必要がある可能性があります。 

Android Studio の使用

Android Studio を使用してキャッシュをクリアするには、次の手順を実行します。

  1. [Build] > [Clean Project.] を選択します。
  2. [ File] > [Invalidate Caches.] を選択します。

再起動が必要になる場合もあります。

コマンドラインの使用

コマンドラインを使用してキャッシュをクリアするには、次の手順を実行します。

  1. Gradle を停止します。

    $ gradlew --stop
    BASH
  2. また、依存関係を更新する必要がある場合もあります。

    $ gradlew --refresh-dependencies
    BASH

Splunk AppDynamics のキャッシュされているイメージを削除してみることもできます。  

  1. イメージを検索します。

    $ find ~/.gradle/caches -name com.appdynamics
    CODE
  2. サブレポートを削除する。 

    $ 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 を実行します。

次のログが表示されます。

Instrumentation is disabled for this build variant. Just copying the input files to fulfill Transform contract.

カスタムのデフォルトの検出されていない例外ハンドラを使用した後にクラッシュが報告されない

例外ハンドラをインストールしてから Android エージェントを起動します。検出されていない例外は、エージェントによって処理されると、最初にクラッシュレポートを保存してから例外ハンドラを呼び出します。

ネットワークリクエストが報告されていません

サポートされているネットワーキングライブラリのリストを参照してください。ライブラリがリストにない場合は、常にこれらのネットワークリクエストを手動で報告できます。

debuggable 属性を持つビルドでは、ビルド速度を向上させるために自動インストゥルメンテーション(enableInstrumentation ビルド属性)が無効になっています。これらのビルドに対して自動インストゥルメンテーションを有効にすることはできません。Android エージェント 20.5.0 ~ 20.7.0 を使用するデバッグ可能なビルドは、ネットワーク要求を自動インストゥルメント化しません。

クラスのインストゥルメント化を除外する

  - excludeClasses

プラグインバージョンとは別のランタイムバージョンを適用する

  - dependencies.compile 'com.appdynamics:appdynamics-runtime:4.5.+'
    adeum.dependencyInjection.enabled = false