Release of Android platform development (Java API)


Good news! We’ve added support for developing on mobile devices! We’re starting off by releasing an API, an updated mobile SAFE Authenticator (POC) to use this new API, and a tutorial that will allow you to carry out native android development. We’re pretty excited about this, and hope you are too, because for the first time, everyone now has the ability to develop DApps for mobile devices! And if you’re a developer in the decentralised scene today, you’ll know that this isn’t something that’s available in many other places.

So what does this release give you?

SAFE Authenticator for Android

First things first - anything you develop will need to get authorisation to access the SAFE Network so we developed a SAFE Authenticator app for Android. The SAFE Authenticator acts as a gateway to the SAFE Network by enabling users to create an account & authenticate themselves. It ensures users have full control over the permissions they grant to SAFE apps on their mobile device. Currently it’s a proof-of-concept (POC) we have on GitHub but after a few changes it will be downloadable from the Google Play Store in the near future.

Downloading the APK

You can get the SAFE Authenticator App (POC) from the GitHub Repository.

Before installing the APK

  • If you have the older version on there already you’ll need to take it off first.
  • You’ll need to make sure that your phone/device has permission to install third-party apps.

Getting connected to the Network

Just in case you need to register (or update) your IP address to access the SAFE Network then here’s a quick reminder:

  • Log in to the forum on your normal browser (you’ll need to have Basic Trust Level 1).
  • Visit
  • Click on the SAFE Network logo.
  • Select the Alpha 2 network.
  • Click on the button to register or update your IP address - if the IPs are the same then ignore this step.
  • Click on the clipboard icon to copy the invitation token.
  • Paste the invite code into the Invitation field on the Authenticator.

Building an Android application for the SAFE Network

You can now learn how to build a native Android application for the SAFE Network. For this you’ll need Android 7.0 Nougat (API 24) as a minimum. To help you along the way, we’ve also added a tutorial that walks you through the process of building a simple to-do list application.

See the tutorial on DevHub

API Documentation

If you’re looking to build quality mobile applications then having good documentation is a must to guide you along the way. So, in addition to the existing Node.js API documentation, we’ve released a new Java API for developing on Android: Android API - Java

I'm A Java Developer : To code my SAFEnet app should I forget Java and use something else?

What’s the situation wrt iOS development? I know someone who may be interested in SAFE for an existing iOS app so want to check before contacting them.


Application development for iOS devices can be done using Xamarin using the SafeApp C# package on nuget. For authentication to the Alpha-2 network, the developer can build and run the SafeAuthenticator application from this repository on an iOS simulator / registered development device.


Are there instructions on how to use a native Java library, rather than the one including the Android dependencies?

From looking at the code in under api, it isn’t obvious that there are any Android libraries needed. However, when I try to build the library, it is asking me for Android SDK, agreed Android licenses and so forth.

Ideally, I’d like to be able to use JitPack to just build a jar that I can use in my Java project, until there is any formal Maven Central package that I can include.

I understand that Android may be the destination, but core Java support should be on-route. Has anyone been experimenting with this?


You can build just the native Java lib from the command line like:

gradlew :safe-app:download-nativelibs
gradlew :safe-app:build

The api and lib jars will be created in safe_app_java/api/build/libs and safe_app_java/lib/build/libs.
The shared native libs will be in safe_app_java/safe-app/.tempDownloads.


Thanks, @ogrebgr - that is exactly what I needed! Are these things obvious from the build.gradle or some such? I’ve not really used gradle much in anger.


More or less… I just had the experience from previous versions and the experiments with them.


@Traktion @ogrebgr I’ve created a new topic with some desktop specific instructions and an example too :slight_smile: