Android アプリケーションをインストゥルメント化するには、最初に使用しているプラットフォームのアプリケーションを構築してからインストゥルメンテーション コードを追加する必要があります。  

開始するには、次の手順を実行します。

  1. Android アプリケーションの構築
  2. Android アプリケーションのインストゥルメント化 

Android アプリケーションの構築

アプリケーションを構築するには、ご使用のプラットフォームの手順に従います。

Gradle/Android Studio

Android アプリケーションのビルドを構成するには、次の手順を実行します。

  1. Gradle、Android Tools と Cisco AppDynamics プラグインのバージョンの互換性を確認します
  2. Android エージェントをインストールします
  3. プラグインをアクティブにします

Android エージェントのインストール

Android エージェントをインストールするには、ネイティブ パッケージ システムを使用します。アプリケーションモジュール build.gradle で、Splunk AppDynamics Gradle プラグインのクラスパスをビルドパス依存関係句に追加します。classpath 'com.appdynamics:appdynamics-gradle-plugin:' の場合、Splunk AppDynamics ダウンロードポータルからの最新の Android エージェントバージョンを使用します。ただし、Gradle と Android Tools の間の互換性のため、またはその他の理由で、古いバージョンの Splunk AppDynamics プラグインを使用することができます。

Android Gradle プラグイン 3.4.1 以降を使用できない場合は、Android Agent 20.4.0 以前のバージョンを使用する必要があります。

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.0'
        classpath 'com.android.tools.build:gradle:3.4.1' // 3.4.1 or higher
        classpath 'com.appdynamics:appdynamics-gradle-plugin:<android-agent-version>' // Set to your Android Agent version.
    }
}
allprojects {
    repositories {
        mavenCentral()
    }
}
TEXT

プラグインのアクティブ化

モジュールレベル build.gradle で、adeum プラグインを以下の例のように com.android.application プラグインの直後に追加します。


apply plugin: 'com.android.application'
apply plugin: 'adeum' // this line added for AppDynamics
TEXT

Apache Maven プロジェクト

アプリケーションが Maven プロジェクトの場合は、次の手順を実行します。

  1. <dependencies> セクションに次のコードを追加します。

    <dependency>
       <groupId>com.appdynamics</groupId>
       <artifactId>appdynamics-runtime</artifactId>
       <version>1.0</version>
    </dependency>
    TEXT
  2. <plugins> セクションに次のコードを追加します。

    <plugin>
        <groupId>com.appdynamics</groupId>
        <artifactId>appdynamics-maven-plugin</artifactId>
        <version>1.0</version>
        <executions>
            <execution>
                <phase>implementation</phase>
                <goals>
                    <goal>adinject</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    TEXT

Ant/Eclipse

手順については、ナレッジベースの記事「Use Ant to Build Android Apps with the Cisco AppDynamics Android SDK」を参照してください。

Android アプリケーションのインストゥルメント化

アプリケーションの構築が完了したら、次の手順を実行します。

  1. 必要な権限の追加
  2. アプリケーションキーの取得
  3. ソースの変更
  4. ビルドの実行
  5. インストゥルメンテーションの確認

必要な権限の追加

アプリケーションの AndroidManifest.xml ファイルを開き、次の権限があることを確認します。

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
XML

これらの権限の両方が存在しない場合は、追加します。

EUM アプリケーションキーの取得

コントローラ UI で EUM アプリケーションキーを取得するには:

  1. コントローラ UI 上部のナビゲーションバーで、[User Experience] > [Mobile Apps] に移動します。
  2. [Add App] > [Android] をクリックし、[Getting Started Wizard - Android] ページを開きます。 

     

  3. Manual をクリックします。

    Splunk AppDynamics は Android Studio 4.0 以降をサポートしなくなったため、2020 年 5 月(Android Studio 4.0 がリリースされたとき)の時点で、Android Studio プラグインのインストール方法を使用することはお勧めしません。代わりに、以下の手順の手動インストール方法に従ってください。

  4. [Create a new Mobile App Group] を選択し、アプリケーション名を入力して [ Continue] をクリックします。
  5. 表示されたアプリケーションキーとコレクタ URL をコピーします。

ソースの変更

  1. アプリケーションのプライマリアクティビティを定義するソースファイルで、次の import を追加します。

    import com.appdynamics.eumagent.runtime.Instrumentation;
    JAVA
  2. プライマリアクティビティの onCreate() メソッドで、上記の手順 2 から EUM アプリケーションキーを渡す次の行を追加します。

    Instrumentation.start(<EUM_APP_KEY>, getApplicationContext());
    JAVA
  3. ファイルを保存します。コードは次のようになります。

    import com.appdynamics.eumagent.runtime.Instrumentation;
    ...
    @Override public void onCreate(Bundle savedInstanceState) {
      Instrumentation.start(<EUM_APP_KEY>, getApplicationContext());
      ...
    }
    JAVA
  4. メソッド withCollectorURL および withScreenshotURL を使用してエージェントを初期化する際にメトリックとスクリーンショットを領域内の SaaS EUM サーバおよびスクリーンショットサービスにレポートするよう Android エージェントを設定します。(オンプレミスの EUM サーバ使用している場合は、実装の詳細について、「エージェント設定のカスタマイズ」を参照してください)。

    import com.appdynamics.eumagent.runtime.Instrumentation;
    ...
    @Override public void onCreate(Bundle savedInstanceState) {
      Instrumentation.start(AgentConfiguration.builder()
        .withAppKey("<EUM_APP_KEY>")
        .withContext(getApplicationContext())
        // The default SaaS EUM Server and Screenshot Service are in the Americas, 
        // so you can omit the following settings if you are in the Americas.
        .withCollectorURL("https://<your_region>-col.eum-appdynamics.com")
        .withScreenshotURL("https://<your_region>-image.eum-appdynamics.com/")
        .build());
      ...
    }
    JAVA
  5. モジュールレベルの build.gradle ファイルで、Splunk AppDynamics アカウント情報を adeum スニペットの構成として追加します開始ウィザードでこの手順を完了すると、構成が UI コードスニペットに入力されます。[Getting Started Wizard, ] から EUM アプリケーションキーを取得できない場合は、「ブラウザモニタリング構成へのアクセス」を参照してください。

    dependencies {
     implementation 'com.appdynamics:appdynamics-runtime:<latest version>' 
    // This line is added for Cisco AppDynamics.
    }
    
    adeum { // This section is added for Cisco AppDynamics.
    account {
     name '<account name>'
     licenseKey '<key>'
    }
    JAVA


    1. Android Studio を使用している場合は、ビルドスクリプトブロックをプロジェクトの build.gradle ファイルの先頭に追加する必要があります。

      // project level build.gradle
      
      buildscript {
        dependencies{
            classpath("com.appdynamics:appdynamics-gradle-plugin:<latest-version>")}
      
        repositories {
          mavenCentral()
        }
      }
      JAVA


      または、settings.gradle ファイルでプラグインブロックを使用して resolutionStrategy ブロックを定義することもできます。

      // project level build.gradle
      plugins{
      	id 'com.appdynamics.appdynamics-gradle-plugin' version<version>
      }
      // settings.gradle
      repositories{
      	gradlePluginPortal()
      	mavenCentral()
      }
      resolutionStrategy {
        eachPlugin {
          plugin
              -> if (plugin.requested.id.id
                  == "com.appdynamics.appdynamics-gradle-plugin") {
            useModule("com.appdynamics:appdynamics-gradle-plugin:<latest-version>")
          }
        }
      }
      JAVA

ビルドの実行

ビルドシステムの手順に従って Android アプリケーションを構築作成します。

コンソールに表示される例を次に示します。

 [injector] 				/=========================================\
 [injector] 				| Cisco AppDynamics BCI Instrumentation summary  |
 [injector] 				\=========================================/
 [injector]
 [injector]
 [injector] 		 - Total number of classes visited (#720 classes)
 [injector] 		 - Total number of classes instrumented (#1 classes)
 [injector] 		 - Total number of classes failed to instrument (#2 classes)
 [injector] 		 - Total number of features discovered (#3)
 [injector]

インストゥルメンテーションの確認

使用したビルドシステムに基づいて、インストゥルメンテーションが正常に行われたことを確認します。

Gradle/Android エージェント インストーラ プラグイン

-i フラグを使用していない場合は、コンソール出力に「inject」が含まれている行があることを確認してください。コンソールにこの情報が出力されていない場合は、プロジェクトが正しく構成されていないか、インジェクタが完全に動作していません。このプロセスの詳細なログは、<project>/target/appdynamics_eum_android_bci.log または <module>/target/appdynamics_eum_android_bci.log のいずれかにあります。

Maven

コンソールにこの情報が出力されていない場合は、プロジェクトが正しく構成されていないか、インジェクタが完全に動作していません。このプロセスの詳細なログは、<project>/target/appdynamics_eum_android_bci.log または <module>/target/appdynamics_eum_android_bci.log のいずれかにあります。

Ant

コンソールにこの情報が出力されていない場合は、プロジェクトが正しく構成されていないか、インジェクタが完全に動作していません。このプロセスの詳細なログは、<project>/target/appdynamics_eum_android_bci.log または <module>/target/appdynamics_eum_android_bci.log のいずれかにあります。