デフォルトでは、インストゥルメンテーションは release
と debug
の両方のビルドで有効になっています。ただし、場合によっては、特定のビルドのインストゥルメンテーションを無効にする必要があります。
たとえば、コードの問題を追跡している場合は、debug
ビルドのインストゥルメンテーションを無効にして、release
ビルドのインストゥルメンテーションを有効にすることができます。このためには、adeum
オブジェクトで、次のように enabledForDebugBuilds
を false
に、enabledForReleaseBuilds
を true
に設定します。
...
adeum {
//other stuff, if it exists
// Optional.
// By default, instrumentation is enabled for both debug and release builds.
// This controls instrumentation for "debuggable" build types.
enabledForDebugBuilds = false
// This controls for non-debuggable build types.
enabledForReleaseBuilds = true
}
...
JAVA
実行時のインストゥルメンテーションの状態の確認
1 つ以上のビルドでインストゥルメンテーションが無効になっている場合は、実行時にインストゥルメンテーションの確認を無効にする必要があります。インストゥルメンテーションの実行時検証を無効にするように、ビルド設定のブール値フィールドを設定することができます。インストゥルメンテーションのランタイム検証は、デフォルトでオンになっています。メソッド withAutoInstrument を使用すると、オフにすることができます。
ビルド設定では、ビルドタイプの CHECK_ENABLED
フィールドにブール値を設定できます。次の表で、設定値とインストゥルメンテーションの状態、およびアプリケーションのランタイム時の動作について説明します。
構成値 | インストゥルメンテーションの状態 | ランタイム動作 |
---|
true | [有効(Enabled)] | エージェントは、初期化前にインストゥルメンテーションが有効になっていることを確認します。 |
無効 | エージェントは、インストゥルメンテーションが有効ではなく、IllegalState 例外をスローしたことを確認します。 |
false | [有効(Enabled)] | エージェントは、インストゥルメンテーションが有効になっているかどうかを確認せずに初期化します。 |
無効 |
たとえば、次のビルド設定では、リリースビルドの CHECK_ENABLED
が true
に設定され、デバッグビルドでは 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 initaliazation 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