Download PDF
Download page Xamarin アプリケーションのインストゥルメンテーション.
Xamarin アプリケーションのインストゥルメンテーション
Xamarin アプリケーションをモニタするには、アプリケーションをインストゥルメント化し、Xamarin エージェントがモバイルメトリックを収集できるようにする必要があります。
モバイル RUM をセットアップしアクセスしたら、次の手順を実行します。
- サポートされるプラットフォームの確認
- 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 iOS、Android、および Forms アプリケーションを手動でインストゥルメント化します。
Xamarin エージェントパッケージの追加
- Xamarin エージェントは NuGet ギャラリーから取得します。nuget.org から AppDynamics Xamarin エージェントのパッケージを追加するには、「パッケージの追加」に記載されている手順に従ってください。
- AppDynamics.Agent.Forms の Xamarin.Forms パッケージを追加します。
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"/>
これらの権限が存在しない場合は、Properties/AndroidManifest.xml
ファイルに追加します。
エージェントの初期化
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 エージェントが 21.6.0 以降の iOS プロジェクトの場合は、デバッグビルドやリリースビルドなどの各 simulator
ビルド構成用に MtouchExtraArgs
--registrar:static
を追加する必要があります。静的レジストラがすでにデフォルトであるため、これは物理デバイス構成には適用されません。
iOS プロジェクトファイルを直接編集する場合は、ビルド構成に MtouchExtraArgs
要素が含まれている必要があります。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
...
<MtouchExtraArgs>--registrar:static</MtouchExtraArgs>
</PropertyGroup>
"
(オプション)Xamarin 自動インストゥルメンテーションの有効化
Xamarin エージェントは、Xamarin 固有のインストゥルメンテーション コードをプロジェクトに自動的に挿入できます。次の操作ができます。
- HttpClient または Refit ネットワークリクエストを自動的にトラッキングします。
Xamarin.Forms
ページを自動的にトラッキングします。Xamarin.Forms
UI 要素を自動的にトラッキングします。
AppDynamics.Agent.AutoInstrument.Fody
という名前の別のベータ版 NuGet パッケージを使用して実現できます。
AppDynamics.Agent.AutoInstrument.Fody
パッケージのセットアップ
AppDynamics.Agent.AutoInstrument.Fody
パッケージを追加します。AppDynamics.Agent.AutoInstrument.Fody
ベータ版パッケージをインストールするには、[Include prereleases] オプションをオンにして、このバージョンが表示されるようにします。- ソリューションを構築します。
ソリューションを構築すると、次の 2 つのファイルが自動的に生成されます。
FodyWeavers.xml
FodyWeavers.xsd
これらのファイルはソース管理にチェックインする必要があります。
上記のファイルが自動的に生成されない場合は、次の内容を持つ
FodyWeavers.xml
という名前の新しいファイルを手動で作成する必要があります。<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"> <AppDynamics.Agent.AutoInstrument/> </Weavers>
C#プロジェクトですでに
Fody
が使用されている場合、これらのファイルはすでにそこにあり、AppDynamics.Agent.AutoInstrument
ウィーバを含むようにFodyWeavers.xml
ファイルを更新するだけで済みます。次に例を示します。
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"> ... Existing weavers ... <AppDynamics.Agent.AutoInstrument/> </Weavers>
C#
(オプション)インストゥルメンテーションのカスタマイズ
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 をクリックします。