このページでは、Android ビルドタイプのインストゥルメンテーションを有効または無効にする方法について説明します。
ビルドタイプのデフォルトのインストゥルメンテーション
デフォルトでは自動インストゥルメンテーションが有効になっていますが、設定オプションを使用して、ビルドタイプ、製品フレーバー、またはビルドバリアントごとに無効にすることができます。
adeum {
...
disabledForBuildTypes = ["debug"]
disabledForProductFlavors = ["app"]
disabledForVariants = ["appDebug"]
webViewCallbackCrashReportingEnabled = false // Auto-instrumentation is enabled for WebChromeClient and WebViewClient
...
}
JAVA
実行時のインストゥルメンテーションの状態の確認
1 つ以上のビルドでインストゥルメンテーションが無効になっている場合は、実行時にインストゥルメンテーションの確認を無効にする必要があります。インストゥルメンテーションの実行時検証を無効にするように、ビルド設定のブール値フィールドを設定することができます。インストゥルメンテーションのランタイム検証は、デフォルトでオンになっています。メソッド withAutoInstrument
を使用すると、オフにすることができます。
ビルド設定では、ビルドタイプの CHECK_ENABLED
フィールドにブール値を設定できます。次の表で、設定値とインストゥルメンテーションの状態、およびアプリケーションのランタイム時の動作について説明します。
構成値 | インストゥルメンテーションの状態 | ランタイム動作 |
---|
true | [有効(Enabled)] | エージェントは、初期化前にインストゥルメンテーションが有効になっていることを確認します。 |
無効 | エージェントは、インストゥルメンテーションが有効になっていないことを確認し、IllegalState 例外をスローします。 |
false | [有効(Enabled)] | エージェントは、インストゥルメンテーションが有効になっているかどうかを確認せずに初期化します。 |
無効 |
たとえば、次のビルド構成では、フィールド CHECK_ENABLED
は release ビルドの場合は true
に設定され、debug ビルドの場合は false
に設定されます。
debug
ビルドのエージェントはインストゥルメンテーション コードを実行する前にインストゥルメンテーションが有効になっているかどうかを確認しませんが、release
ビルドのアプリケーションコードはインストゥルメンテーション コードを実行する前に確認します。
...
android {
// usual stuff
buildTypes {
// usual stuff
release {//these lines added for AppDynamics
//release based configuration
// The release build by default is not "debuggable".
// The build config "CHECK_ENABLED" will be accessible in the runtime environment.
// This enables the Android Agent to verify that the instrumentation has been enabled before running the initialization code.
// If instrumentation has not been enabled, an "IllegalState" exception is thrown.
buildConfigField "boolean", "CHECK_ENABLED", "true"
}
debug {
// Setting 'CHECKED_ENABLED' to "false" means the Android Agent will run the initialization code without confirming that
// instrumentation has been enabled. No exception will be thrown.
buildConfigField "boolean", "CHECK_ENABLED", "false"
}
}
}
...
JAVA
CHECK_ENABLED
の値が true
の場合、Android エージェントは初期化コードを実行する前にインストゥルメンテーションが有効になっていることを確認します。値が false
の場合、Android エージェントはインストゥルメンテーションが有効になっているかどうかに関係なく初期化コードを実行します。
次のインストゥルメンテーション初期化コードは、メソッド withCompileTimeInstrumentationCheck
を使用してビルド設定 CHECK_ENABLED
の値を確認する方法を示しています。
import com.appdynamics.eumagent.runtime.Instrumentation;
...
Instrumentation.start(
AgentConfiguration config = AgentConfiguration.builder()
.withAppKey(<EUM_APP_KEY>)
.withContext(this)
.withCompileTimeInstrumentationCheck(BuildConfig.CHECK_ENABLED)
.build();
);
...
JAVA