All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.sentry.android.gradle.instrumentation.appstart.Application.kt Maven / Gradle / Ivy

package io.sentry.android.gradle.instrumentation.appstart

import com.android.build.api.instrumentation.ClassContext
import io.sentry.android.gradle.instrumentation.ClassInstrumentable
import io.sentry.android.gradle.instrumentation.CommonClassVisitor
import io.sentry.android.gradle.instrumentation.MethodContext
import io.sentry.android.gradle.instrumentation.MethodInstrumentable
import io.sentry.android.gradle.instrumentation.SpanAddingClassVisitorFactory
import org.objectweb.asm.ClassVisitor
import org.objectweb.asm.MethodVisitor

class Application : ClassInstrumentable {

    override fun getVisitor(
        instrumentableContext: ClassContext,
        apiVersion: Int,
        originalVisitor: ClassVisitor,
        parameters: SpanAddingClassVisitorFactory.SpanAddingParameters
    ): ClassVisitor = CommonClassVisitor(
        apiVersion = apiVersion,
        classVisitor = originalVisitor,
        className = "Application",
        methodInstrumentables = listOf(ApplicationMethodInstrumentable()),
        parameters = parameters
    )

    override fun isInstrumentable(data: ClassContext): Boolean =
        data.currentClassData.superClasses.contains("android.app.Application")
}

class ApplicationMethodInstrumentable : MethodInstrumentable {

    override fun getVisitor(
        instrumentableContext: MethodContext,
        apiVersion: Int,
        originalVisitor: MethodVisitor,
        parameters: SpanAddingClassVisitorFactory.SpanAddingParameters
    ): MethodVisitor = ApplicationMethodVisitor(
        apiVersion = apiVersion,
        originalVisitor = originalVisitor,
        instrumentableContext = instrumentableContext,
    )

    override fun isInstrumentable(data: MethodContext): Boolean {
        // TODO: think about constructors as well
        // , ()V
        // , ()V

        // public void onCreate()
        // onCreate, ()V
        return data.name == "onCreate" && data.descriptor == "()V"
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy