Skip to content


Repository files navigation

Simpleperf for gecko apps

Scripting to make simpleperf profiling of Gecko-based Android Apps easier

You will need to use:

  • either a GeckoView-based vehicle from Mozilla that is both released (i.e., has had its full symbols published to -- generally, Nightly, Beta, or Release) and has been debug signed (i.e., has been processed by in this repository);
  • or your own geckoview_example built from source, i.e., one built with ./mach build ./mach android install-geckoview_example

This is because simpleperf requires the unstripped shared objects which are not part of the published Android packages directly.


  • Clone simpleperf:

  • Add the helper scripts to your clone of the repo

  • Modify to refer to the correct android-ndk path for your workspace and to the correct $TOPOBJDIR (if building locally).

  • If you are targetting a non-debuggable Mozilla-released vehicle, debug sign your APK using


  • run

    • This will start simpleperf and then wait for geckoview_example to be started manually.
    • In there are alternative codepaths commented out that will launch geckoview_example first and then start profiling
  • Once the capture is complete, simpleperf will copy libraries for debug info from, in order of preference:

    1. Your $TOPOBJDIR (if that environment variable is set)
    2. Mozilla's symbol server at (if you're using using
    3. The device itself -- although these libraries will be unstripped.
    • simpleperf requires the libraries to be in a specific folder relative to the data file. e.g binary_cache/data/app/org.mozilla.geckoview_example-1/lib/arm/
    • Depending on the device and app you may need to manually copy the unstripped libs to the correct binary_cache folder, e.g. binary_cache/data/app/org.mozilla.fenix.debug-cGBgD0-yu6fZrNrmK2DHpw==/lib/arm
    • You can ensure that they are unstripped by running file on them, e.g. file binary_cache/data/app/org.mozilla.geckoview_example-1/lib/arm/
  • You can then run python to generate the html report

  • There are additional scripts which can be useful such as the or

    • Note that these scripts require you to explicitly set the symbol path.
    • e.g. python --sort dso --symfs binary_cache or python --symfs binary_cache

Exporting to firefox profiler format


  • The script has been added which also provides options to capture applink, fenix, and other variations
  • Simpleperf is a rich tool with many more options, described here
  • From the simpleperf tooling: " isn't supported on Android < N, please switch to use simpleperf binary directly."


Scripting to make simpleperf profiling of geckoview_example easier






No releases published


No packages published