Skip to content

ooni/probe-android

Repository files navigation

OONI Probe Android

OONI Probe Android

chat on Slack open issues Emulator Tests Status follow on Twitter

OONI Probe is free and open source software designed to measure internet censorship and other forms of network interference.

Click here to report a bug

Other supported platforms: iOS, Desktop, CLI

Developer information

This application requires Android Studio. We use Gradle and, as part of the initial gradle sync, Android studio will download all the required dependencies.

The most important dependency is oonimkall. This dependency contains the network measurement engine. Its sources are at ooni/probe-cli.

When using Gradle from the command line, you will need to set the ANDROID_SDK_ROOT environment variable to point to the directory in which you have installed the Android SDK.

Build variants

We use the classic debug and release build types. We also implement the following flavours:

  • stable, dev, and experimental (dimension: testing);

  • full and fdroid (dimension: license).

The testing dimension controls whether we're building a release or a more unstable version. We build releases using the stable flavour. The dev flavour builds the version of the app that should be released on the store as the beta channel. The experimental flavour, instead, allows a developer to build a one-off version of the app that uses a custom build of the oonimkall library.

For stable and dev, we fetch oonimkall from the Maven central repository. The experimental flavour, instead, requires you to put the oonimkall.aar you built inside engine-experimental.

The license dimension controls which proprietary libraries to include into the build. The full flavour includes all such dependencies, while the fdroid flavour does not include any of them.

The variant names are therefore:

  • experimentalFullDebug
  • experimentalFullRelease
  • devFullDebug
  • devFullRelease
  • stableFullDebug
  • stableFullRelease

We additionally have stableFdroidDebug and stableFdroidRelease.

All of this is controlled by app/build.gradle.

Gradle modules

  • app contains the mobile app;
  • engine contains wrappers for oonimkall, the measurement engine library;
  • engine-experimental allows us to implement the experimental build flavour where you put the oonimkall.aar file you built inside engine-experimental rather than downloading it from Maven Central.

Building an apk

Ensure you have Android Studio and Android SDK installed. Build the devFullRelease variant using Android Studio or this command line:

./gradlew assembleDevFullRelease

Building the app for f-droid

Instead to build the app to stay compliant to F-Droid use fdroid, which contains small tweaks required to have the app accepted by f-droid.

./gradlew assembleFdroid

Testing

Run unit tests

./gradlew testStableFullDebug

Run instrumented tests

Note: To also run the automation tests (to generate screenshots), set the Build Config flag RUN_AUTOMATION as true.

./gradlew connectedStableFullDebugAndroidTest

Generate code coverage report (after all unit and instrumented tests successfully passed)

./gradlew jacocoAndroidTestReport

Managing translations

To manage translations check out our translation repo and follow the instructions there.

Contributing

  • Write some code

  • Open a pull request

  • Have fun!