Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ooni/probe-android
OONI Probe Android
https://github.com/ooni/probe-android
ooniprobe
Last synced: 3 months ago
JSON representation
OONI Probe Android
- Host: GitHub
- URL: https://github.com/ooni/probe-android
- Owner: ooni
- License: gpl-3.0
- Created: 2015-03-17T13:49:21.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-04-12T07:12:19.000Z (7 months ago)
- Last Synced: 2024-04-14T04:07:48.298Z (7 months ago)
- Topics: ooniprobe
- Language: Java
- Homepage: https://ooni.org
- Size: 35.8 MB
- Stars: 171
- Watchers: 27
- Forks: 43
- Open Issues: 22
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE
Awesome Lists containing this project
- awesome-hacking-lists - ooni/probe-android - OONI Probe Android (Java)
README
# OONI Probe Android
[![OONI Probe Android](assets/OONIProbeLogo.png)](https://ooni.org)
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](https://github.com/ooni/probe/issues/new)
Other supported platforms: [iOS](https://github.com/ooni/probe-ios),
[Desktop](https://github.com/ooni/probe-desktop), [CLI](https://github.com/ooni/probe-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](https://github.com/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`).
- `ooni` and `dw` (dimension: `brand`).
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.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 `brand` dimension controls the branding of the application. The `ooni` flavour is the default branding, while the `dw` flavour is for the "News Media Scan" branding.
The variant names are therefore:
- `ooniExperimentalFullDebug`
- `ooniExperimentalFullRelease`
- `ooniDevFullDebug`
- `ooniDevFullRelease`
- `ooniStableFullDebug`
- `ooniStableFullRelease`
- `dwExperimentalFullDebug`
- `dwExperimentalFullRelease`
- `dwDevFullDebug`
- `dwDevFullRelease`
- `dwStableFullDebug`
- `dwStableFullRelease`We additionally have `ooniStableFdroidDebug`, `ooniStableFdroidRelease`, `dwStableFdroidDebug` and `dwStableFdroidRelease`.
All of this is controlled by [app/build.gradle](app/build.gradle).
## Gradle modules
- [app](app) contains the mobile app;
- [engine](engine) contains wrappers for `oonimkall`, the measurement engine library;
- [engine-experimental](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 `ooniDevFullRelease`
variant using Android Studio or this command line:```sh
./gradlew assembleOoniDevFullRelease
```## 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](https://f-droid.org/).
```sh
./gradlew assembleOoniDevFullRelease
```## Testing
Run unit tests/
```sh
./gradlew testOoniStableFullDebug
```Run instrumented tests
_Note: To also run the automation tests (to generate screenshots), set the Build Config flag `RUN_AUTOMATION` as true._
```sh
./gradlew connectedOoniStableFullDebugAndroidTest
```Generate code coverage report (after all unit and instrumented tests successfully passed)
```sh
./gradlew jacocoAndroidTestReport
```## Managing translations
To manage translations check out our [translation repo](https://github.com/ooni/translations)
and follow the instructions there.## Contributing
* Write some code
* Open a pull request
* Have fun!