• Stars
    star
    181
  • Rank 212,054 (Top 5 %)
  • Language
    Java
  • License
    GNU General Publi...
  • Created over 9 years ago
  • Updated 11 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

OONI Probe Android

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!

More Repositories

1

probe

OONI Probe network measurement tool for detecting internet censorship
760
star
2

probe-cli

OONI Probe Engine and CLI
Go
234
star
3

spec

OONI Specifications
159
star
4

ooni.org

The ooni.org homepage and all cross organisational issues
HTML
76
star
5

probe-desktop

The next generation OONI Probe desktop app
JavaScript
76
star
6

explorer

OONI Explorer: uncover evidence of internet censorship worldwide
JavaScript
74
star
7

probe-ios

OONI Probe iOS
Objective-C
68
star
8

oohttp

Fork of Go stdlib's net/http that works with alternative TLS libraries like refraction-networking/utls.
Go
65
star
9

sysadmin

System administration tools
Jinja
59
star
10

backend

Everything related to OONI backend infrastructure: ooni/api, ooni/pipeline, ooni/sysadmin, collector, bouncers and test-helpers
Python
51
star
11

probe-engine

Semi-automatic export of https://github.com/ooni/probe-cli internals
Go
45
star
12

pipeline

OONI data processing pipeline
Python
40
star
13

minivpn

A minimalistic OpenVPN implementation in Go
Go
40
star
14

EvilGenius

Evil Genius plays the role of the Descartes demon, creating a distorted view of the internet with censorship (it's a censorship simulator)
Python
38
star
15

explorer-legacy

[DEPRECATED] For the latest OONI Explorer see: https://github.com/ooni/explorer
JavaScript
33
star
16

utls-light

Minimal version of utls for parrotting the TLS handshake of popular web browsers
Go
25
star
17

api

OONI Measurements API
Python
22
star
18

probe-legacy

The legacy python version of OONI Probe
Python
22
star
19

license

OONI License
19
star
20

design-system

OONI Components design system
TypeScript
14
star
21

run

OONI Run allows you to get people to measure the things you care about
TypeScript
12
star
22

orchestra

The OONI Probe Orchestration System
Go
12
star
23

data

OONI Data CLI and Pipeline v5
Python
8
star
24

translations

OONI translations
Python
8
star
25

ooni-sync

[DEPRECATED] For accessing OONI data see: https://ooni.org/data/
Go
8
star
26

netx

OONI's Go net and net/http extensions for performing network measurements
Go
7
star
27

netem

Network emulation for writing integration tests in Go
Go
7
star
28

blocking-fingerprints

Consolidate all the blocking fingerprints in one place
Python
7
star
29

historical-geoip

Generate historical IP to country + ASN databases for processing historical OONI data
Python
5
star
30

datk

OONI Data Analysis ToolKit
Python
4
star
31

ooni.github.io

mirror of the OONI website on github pages
HTML
4
star
32

jafar

Grand vizier of censorship simulation
Go
4
star
33

design.ooni.io

OONI Design guidelines website
JavaScript
4
star
34

gatherings

Notes and resources related to OONI gatherings
4
star
35

2022-04-websteps-illustrated

websteps: winter 2022 edition
Go
4
star
36

collector

Next generation OONI collector
Go
4
star
37

ooni.io

JavaScript
3
star
38

labs

OONI Labs are experiments not yet ready for prime-time
JavaScript
3
star
39

code-style

Code style guide
3
star
40

asn-db-generator

Generate an IP-address-to-ASN database compatible with Maxmind
Python
3
star
41

pm-tools

Tooling for project management
Python
3
star
42

psiphon

Vendor psiphon and dependencies
Go
2
star
43

slides

OONI presentation slides
JavaScript
2
star
44

country-util

Utilities for dealing with countries in an un-opinionated, human friendly and respectful manner
Python
2
star
45

probe-assets

Assets used by OONI Probe
Go
1
star
46

probe-web

Measure website blocking in your browser
JavaScript
1
star
47

notebooks

Collection of OONI related jupyter notebooks
Jupyter Notebook
1
star
48

probe-mobile-appium

Java
1
star
49

test-lists-ui

Frontend application for submitting contributions to the Citizenlab test-lists used by OONI Probe to test websites for censorship.
JavaScript
1
star