prasad-vennam/awesome-android-ai-agent-skills

android-macrobenchmark

Use when evaluating App Startup Time, frame timing, and writing Baseline Profiles.

Ver código fuente

Cómo usar

  1. Copia el comando y revisa el paquete antes de instalarlo en tu entorno de agente.
  2. Consulta las herramientas, credenciales y entornos necesarios en el documento original.
  3. Describe las entradas y el resultado deseado; contrasta la salida con las fuentes.
npx skills add https://github.com/prasad-vennam/awesome-android-ai-agent-skills --skill android-macrobenchmark

Antes de empezar

  • La instalación no incluye suscripción al modelo, cuota API ni permisos sobre tus archivos.
  • Las estrellas e instalaciones reflejan actividad, no una prueba independiente de calidad o seguridad.
Documento original del Skill

Contenido del repositorio de origen con títulos, ejemplos, código, tablas, enlaces e imágenes preservados.

Android Macrobenchmark & Baseline Profiles 🏎️

App Startup Time and UI performance are crucial. Macrobenchmark allows us to write standard JUnit 4 tests to measure end-to-end user journeys (like app startup or scrolling a list) and automatically generate Baseline Profiles that Android's ART uses to pre-compile critical code.

⚡ When to Use

  • When the prompt mentions "speeding up app startup time"
  • When writing a Macrobenchmark module
  • When generating or applying Baseline Profiles (baseline-prof.txt)

🏗️ Core Rules / Pillars

1. Separate Macrobenchmark Module

  • Pattern: Macrobenchmarks MUST be in a separate com.android.test module. They launch your application by its applicationId externally.
  • Anti-Pattern: Do NOT attempt to run Macrobenchmark tests inside the standard app/src/androidTest directory.

2. Writing a Scrolling Benchmark

  • Implementation:
kotlin
  @RunWith(AndroidJUnit4::class)
  class ScrollBenchmark {
      @get:Rule
      val benchmarkRule = MacrobenchmarkRule()

      @Test
      fun scrollTimeline() = benchmarkRule.measureRepeated(
          packageName = "com.example.app",
          metrics = listOf(FrameTimingMetric()),
          iterations = 5,
          startupMode = StartupMode.COLD
      ) {
          pressHome()
          startActivityAndWait()
          
          // Using UIAutomator to find the scrollable list and scroll
          val list = device.findObject(By.res("com.example.app", "timeline_list"))
          list.setGestureMargin(device.displayWidth / 5)
          list.fling(Direction.DOWN)
      }
  }

🚧 Critical Anti-Hallucination Guards

  • Trap: Baseline Profiles generation requires a rooted device OR a device running Android 13 (API 33)+.

🔗 Related Resources

Relacionados por tarea

del mismo repositorio

Más Skills

Todos los Skills