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

android-macrobenchmark

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

Quelltext ansehen

Verwendung

  1. Installationsbefehl kopieren und das Quellpaket vor der Installation in der eigenen Agentenumgebung prüfen.
  2. Benötigte Werkzeuge, Zugangsdaten und Hosts im Original prüfen.
  3. Eingabe und gewünschtes Ergebnis beschreiben und die Ausgabe mit den Quellen abgleichen.
npx skills add https://github.com/prasad-vennam/awesome-android-ai-agent-skills --skill android-macrobenchmark

Vor dem Start

  • Die Installation umfasst weder Modellabo noch API-Kontingent oder Dateizugriffsrechte.
  • Sterne und Installationen zeigen Aktivität, keine unabhängige Qualitäts- oder Sicherheitsprüfung.
Originales Skill-Dokument

Aus dem Quell-Repository gerendert; Überschriften, Beispiele, Code, Tabellen, Links und Bilder bleiben erhalten.

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

Verwandte Aufgaben

aus demselben Repository

Weitere Skills

Alle Skills