
Multiplatform (Android, iOS and Desktop) version of the Probe app.
Releases

CI Status

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
desktopMain Desktop-specific code
dwMain News Media Scan specific Branding and customization
ooniMain OONI Probe specific Branding and customization
See docs/Distribution.md for a full comparison of
the ooni/dw organizations, the desktop distribution channels, and the
Apple App Store-specific restrictions.
-
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:
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
- Click the Plus (+) sign in the top left corner of the "Run/Debug Configurations" dialog.
- Choose 'Gradle'.
- Configure with the following:
- Name: OONI_Probe
- Run: :composeApp:runDebug -Porganization=ooni
- Repeat the steps for creating a new configuration.
- 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.
The "Run/Debug Configurations" already has the proper configuration and you just need to select the
XCode Project Scheme NewsMediaScan and run it.
- 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 Localization Lab's Weblate
(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 Weblate when a Pull Request is
merged into the main branch.
Weblate automatically creates Pull Requests with the latest translation changes to keep the app
up-to-date.
Metadata such as Store Listing copy and screenshots are located in the metadata root folder.
Weblate also maintains those translations automatically.
Inside fastlane/metadata are only symbolic links mapping the locales supported by Google Play or
Apple App Store to the Weblate locales. Changes should only be made to the root metadata folder.