Download PDF
Download page Xamarinアプリケーションのインストゥルメンテーション.
Xamarinアプリケーションのインストゥルメンテーション
Xamarin アプリケーションをモニタするには、アプリケーションをインストゥルメント化し、Xamarin エージェントがモバイルメトリックを収集できるようにする必要があります。
モバイル RUM をセットアップしアクセスしたら、次の手順を実行します。
- Xamarin エージェントがプラットフォームをサポートしていることを確認する
- Xamarin エージェントの制限事項を理解する
- Xamarin アプリケーションのインストゥルメント化
- Xamarin インストゥルメンテーションのカスタマイズ(オプション)
Xamarin エージェントのサポート
サポートされるプラットフォーム
- iOS および Android プラットフォーム
他のすべてのプラットフォームはエラーなしで構築および実行されますが、モニタリングは行われません。
サポート対象のライブラリ
- .Net Standard 2.0(Xamarin エージェント 20.10.0 以降を使用)
推奨事項
Xamarin 50.2 以下では、ポータブルクラスライブラリ(PCL)を参照するアプリケーションのインストゥルメンテーションのみがサポートされていました。Xamarin 50.3 以上では、Xamarin エージェントは .NET Standard ライブラリと .NET Standard ライブラリを参照するアプリケーションのインストゥルメンテーションのみをサポートしています。引き続き PCL のサポートが必要な場合は、Xamarin 50.2 以下を使用することをお勧めします。
制限
Xamarin エージェントには、次の制限事項があります。
- 自動インストゥルメンテーションはサポートされていないため、手動でイベントおよびメトリックを報告する必要があります。
- シンボル化はサポートされていません。ただし、Xamarin エージェントは検出されていない例外とネイティブアプリケーションのクラッシュを報告します。
Xamarinアプリケーションのインストゥルメンテーション
次の手順に従って、Xamarin iOS、Android、および Forms アプリケーションを手動でインストゥルメント化します。
Xamarin エージェントパッケージの追加
- Xamarin エージェントは NuGet ギャラリーから取得します。nuget.org からパッケージ
AppDynamics Xamarin Agent
を追加するには、「パッケージの追加」に記載されている手順に従ってください。 Xamarin.Android
プロジェクトで、以下をOnCreate
の下のMainActivity.cs
に追加します。
AppDynamics.Droid.Agent.Init(this, bundle);
Example
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity {
protected override void OnCreate(Bundle bundle) {
base.OnCreate(bundle); //existing code
global::Xamarin.Forms.Forms.Init(this, bundle);
AppDynamics.Droid.Agent.Init(this, bundle); //initialize the agent on the Android Platform
LoadApplication(new App());
}
}
アプリケーションキーの取得
EUM アプリケーションキーを取得するには、Getting Started Wizard を完了します。このキーは、ソースコードを変更するときに必要になります。場合によっては、複数のモバイルアプリケーションが同じキーを共有できます。
Xamarin プラットフォームオプションがないため、Android または iOS のいずれかを選択する必要があります。Android の場合、Manual を選択する必要があります。
[Getting Started Wizard] を完了したが、EUM アプリケーションキーを持っていない場合は、「アプリケーションキーの取得」を参照してください。
必要な権限の追加(Android 展開のみ)
ファイル Properties/AndroidManifest.xml
を開き、次の権限があることを確認します。
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
これらの権限が存在しない場合は追加します。
AppDynamics エージェントアセンブリのリンク
Forms ソリューション
Xamarin Forms は、すべてのプラットフォームを実行するための統合開発環境です。サポート対象以外のプラットフォームで何かを実行しようとしても、エージェントのリンクによってアプリケーションをモニタすることはできませんが、エラーは発生しません。
iOS/Android アプリケーションに対して Xamarin エージェントを使用するには、App.xaml.cs
ファイルの先頭に using
ディレクティブを追加します。
using Xamarin.Forms;
using AppDynamics.Agent;
namespace <AppName>
{
public partial class App : Application
{
...
}
}
iOS ソリューション
iOS アプリケーションで Xamarin エージェントを使用するには、AppDelegate.cs
ファイルの先頭に using
ディレクティブを追加します。
using Foundation;
using UIKit;
using AppDynamics.Agent;
public class AppDelegate : UIApplicationDelegate
{
...
}
Android ソリューション
Android アプリケーションで Xamarin エージェントを使用するには、MainActivity.cs
ファイルの先頭に using ディレクティブを追加します。
using Android.App;
using Android.Widget;
using Android.OS;
using System;
using Android.Content;
using AppDynamics.Agent;
namespace <AppName>
{
[Activity(Label = "Phoneword", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
...
}
...
}
エージェントの初期化
Xamarin エージェントを初期化するには、次のコードを iOS および Android に使用します。ステップ 2 を完了した後に受信した EUM アプリケーションキー(文字列として入力)を使用します。
var config = AppDynamics.Agent.AgentConfiguration.Create(<EUM_APP_KEY>);
AppDynamics.Agent.Instrumentation.InitWithConfiguration(config);
オンプレミス EUM サーバを実行している場合は、EUM サーバへの URL を指定する必要があります。詳細については、「オンプレミス EUM サーバへのポイント(オプション) 」を参照してください。
Forms ソリューション
Forms ソリューションでは、Android と iOS の両方のアプリケーションをインストゥルメント化するために、Xamarin エージェントの App.xaml.cs
ファイルのコンストラクタに初期化コードを配置する必要があります。
public App()
{
InitializeComponent();
// This initialization code is used by both iOS and Android apps.
var config = AppDynamics.Agent.AgentConfiguration.Create(<EUM_APP_KEY>);
AppDynamics.Agent.Instrumentation.InitWithConfiguration(config);
MainPage = new FormsExamplePage();
}
インストゥルメント化する Android 用の MainActivity.cs
ファイルまたは iOS 用の AppDelegate.cs
でアプリケーションコードがある場合は、iOS ソリューションおよび Android ソリューションの場合と同様に、これらのファイルで Xamarin エージェントを初期化する必要があります。
iOS ソリューション
iOS アプリケーションの場合、次に示すように、AppDelegate.cs
ファイルの初期化コードをクラス AppDelegate
のメソッド FinishedLaunching
に配置します。
public class AppDelegate : UIApplicationDelegate
{
// class-level declarations
public override UIWindow Window
{
get;
set;
}
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
// The two lines below initialize the AppDynamics instrumentation.
var config = AppDynamics.Agent.AgentConfiguration.Create(<EUM_APP_KEY>);
AppDynamics.Agent.Instrumentation.InitWithConfiguration(config);
...
return true;
}
...
}
また、Main.cs
(メソッド Main.
内)に配置することも検討してください。
Android ソリューション
MainActivity.cs
ファイルで、初期化コードをメソッド OnCreate:
に配置します。
class MainActivity {
protected override void OnCreate(Bundle savedInstanceState) {
// The two lines below initialize the AppDynamics instrumentation.
var config = AppDynamics.Agent.AgentConfiguration.Create(<EUM_APP_KEY>);
AppDynamics.Agent.Instrumentation.InitWithConfiguration(config);
...
}
}
アプリケーションの構築
Visual Studio からアプリケーションを実行して構築します。Getting Started Wizard から、アプリケーションが接続され、インストゥルメンテーションが検証されていることがわかります。
Xamarin エージェントが 20.10.0 ~ 21.4.0 の iOS プロジェクトの場合は、debug
ビルドや release
ビルドなどの各ビルド構成用に MtouchExtraArgs
引数 --gcc_flags
"-ObjC -lz"
を追加する必要があります。iOS プロジェクトファイルを直接編集する場合は、ビルド構成に MtouchExtraArgs
要素が含まれている必要があります。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
<DefineConstants>DEBUG;ENABLE_TEST_CLOUD;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<CodesignKey>iPhone Developer</CodesignKey>
<MtouchDebug>true</MtouchDebug>
<MtouchFastDev>true</MtouchFastDev>
<MtouchLink>SdkOnly</MtouchLink>
<MtouchArch>x86_64</MtouchArch>
<MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>
<MtouchTlsProvider>Default</MtouchTlsProvider>
<DeviceSpecificBuild>false</DeviceSpecificBuild>
<MtouchExtraArgs>--gcc_flags "-ObjC -lz"</MtouchExtraArgs>
</PropertyGroup>
インストゥルメンテーションのカスタマイズ(オプション)
Xamarin SDK には追加のクラスがあり、アプリケーションデータの種類を拡張し、モバイル RUM を使用して収集および集約できます。詳細については、Xamarin インストゥルメンテーションのカスタマイズを参照してください。
オンプレミス EUM サーバをポイントする(オプション)
オンプレミス EUM サーバを使用するには、「アプリケーションキーの取得」から EUM アプリケーションキーを使用してインストゥルメンテーションを初期化するときに、オンプレミス EUM サーバに URL を渡します。
var config = AppDynamics.Agent.AgentConfiguration.Create(<EUM_APP_KEY>);
config.CollectorURL = <COLLECTOR_URL:PORT>;
AppDynamics.Agent.Instrumentation.InitWithConfiguration(config);
Xamarin エージェントのアップグレード
エージェントに新しい機能が追加されるため、アプリケーションで Xamarin エージェントパッケージをアップグレードする必要があります。
- Visual Studio から AppDynamics エージェントパッケージを含む Xamarin アプリケーションを開きます。
- Packages フォルダから AppDynamics エージェントを選択します。
- 右クリックして Update をクリックします。