Skip to content

guardianproject/tor-android

Repository files navigation

Tor Android

This is native Android TorService built on the Tor shared library built for Android. The included libtor.so binaries can also be used directly as a tor daemon.

Currently, Tor Android is built with the following versions of tor, libevent, openssl, zlib and zstd:

Component Version
tor 0.4.9.5
libevent 2.1.12
OpenSSL 3.5.5
zlib 1.3.2
zstd 1.5.7

Tor Android binaries are available on the Guardian Project Maven Repo

First add the repo to your top level Gradle file:

allprojects {
    repositories {
        // ...
        maven { uri("https://raw.githubusercontent.com/guardianproject/gpmaven/master") }
    }
}

Or, for groovy's build.gradle

allprojects {
    repositories {
        // ...
        maven { url "https://raw.githubusercontent.com/guardianproject/gpmaven/master" }
    }
}

Then add the tor-android and jtorctl dependencies to your project:

dependencies {
    implementation("info.guardianproject:tor-android:0.4.9.5")
    implementation("info.guardianproject:jtorctl:0.4.5.7")
}

Apps using tor-android need to declare the INTERNET permission in their Android Manifest file:

    <uses-permission android:name="android.permission.INTERNET"/>

Tor protects your privacy on the internet by hiding the connection between your Internet address and the services you use. We believe Tor is reasonably secure, but please ensure you read the instructions and configure it properly. Learn more at https://torproject.org/

Minimum Requirements

In order to use tor-android you need to target Android API 24 or higher.

It runs on the following hardware architectures:

  • arm64-v8a
  • armeabi-v7a
  • x86
  • x86_64

Tor Frequently Asked Questions:

Building tor-android

Please see: https://raw.githubusercontent.com/guardianproject/tor-android/master/BUILD.md

tor-android is generally built on Linux, but it can also be built on macOS

This can be built reproducibly using the included Vagrant VM setup. That will run with either libvirt or VirtualBox. The provisioning is based on the "release" job in .gitlab-ci.yml.

Preparing for a release

Top-level build.gradle.kts

Update these fields at the top of build.gradle.kts. For tor 0.4.9.5 the first digits of versionCode and the versionName string are the version of tor used.

Note that VERSION_CODE ends in a 0.

    VERSION_CODE = 49050
    VERSION_NAME = "0.4.9.5"

If you are making new releases of tor-android that don't include a new update of tor, change the last digit of VERSION_CODE and add a field onto VERSION_NAME, ie:

    VERSION_CODE = 49051
    VERSION_NAME = "0.4.9.5.1"

README.md

Update the versions of the dependencies in the table, as well as the field which contains copy+paste instructions on how to add tor-android to a Gradle project.

gradle.properties

Update VERSION_NAME to the version of tor used in this build, ie VERSION_NAME=0.4.9.5

sampletorapp/build.gradle.kts

Update the version of tor-android used in the sample app's Gradle configuration.

Publishing tor-android

Once you build the binaries, you can use Gradle tasks to publish this in various ways, if you have the right credentials

Publish to your local Maven repository: ./gradlew publishToMavenLocal

Publish to GitHub packages: ./gradlew publishReleasePublicationToGitHubPackagesRepository

Publish to Gradle Central: ./gradlew publishAggregationToCentralPortal