Skip to content

ooni/probe-multiplatform

Repository files navigation

OONI Probe Multiplatform App

Multiplatform (Android and iOS currently) version of the Probe app.

Releases

Probe Android @ Google Play
Probe Android @ F-Droid
Probe iOS @ App Store
NMS Android @ Google Play
NMS iOS @ App Store

CI Status

Validate Android Instrumented Tests

Project structure

  • composeApp is for code that will be shared across your Compose Multiplatform applications. It contains several subfolders:

    • commonMain is for code that’s common for all targets.
    • androidMain Android-specific code
    • iosMain iOS-specific code written in Kotlin
    • dwMain News Media Scan specific Branding and customization
    • ooniMain OONI Probe specific Branding and customization
  • iosApp contains the iOS application configuration and the engine integration written in Swift

  • .github contains the Continuous Integration configuration for Github

  • gradle/libs.versions.toml specifies the versions of the plugins and dependencies used across the different modules.

Build, Install, and Run

To build, install, and run your application, use the following commands:

  • For OONI Probe:

    ./gradlew runDebug -Porganization=ooni
    
  • For News Media Scan:

    ./gradlew runDebug -Porganization=dw
    

There is a custom gradle task(copyBrandingToCommonResources) that is used to copy brand specific resources to the common resources folder. This task is called before the preBuild task.

Creating Run Configurations in Android Studio

Configure run configurations for easy execution within Android Studio:

OONI Probe Android Configuration

  1. Click the Plus (+) sign in the top left corner of the "Run/Debug Configurations" dialog.
  2. Choose 'Gradle'.
  3. Configure with the following:
  • Name: OONI_Probe
  • Run: :composeApp:runDebug -Porganization=ooni

News Media Scan Android Configuration

  1. Repeat the steps for creating a new configuration.
  2. Configure with the following:
  • Name: News_Media_Scan
  • Run: :composeApp:runDebug -Porganization=dw

OONI Probe iOS Configuration

The "Run/Debug Configurations" already has the proper configuration and you just need to select the XCode Project Scheme OONIProbe and run it.

News Media Scan iOS Configuration

The "Run/Debug Configurations" already has the proper configuration and you just need to select the XCode Project Scheme NewsMediaScan and run it.

Switching between OONI Probe and News Media Scan

  • Ensure you can run clean and build the project successfully.
  • Run pod install in the iosApp directory.

Testing

Common tests (tests inside commonTest) only run on the iOS Simulator. Choosing the option android (local) won't work. This is a current issue with the official testing library.

Translations

The app is translated by the community through Transifex (Guidelines).

Important Note: Any Pull Request that introduces new strings into the app should be reviewed by @agrabeli. The Pull Request should include screenshots showing the strings in context.

New or updated strings on the default version of the strings-common.xml and strings-organization.xml files are automatically uploaded to Transifex when a Pull Request is merged into the main branch.

Transifex automatically creates Pull Requests with the latest translation changes to keep the app up-to-date.