git ssb


Daan Patchwork / manyverse

Tree: 971983d1abe7f37b163ef497da3005e5325435f5

Files: 971983d1abe7f37b163ef497da3005e5325435f5 /

4696 bytesRaw

MMMMM client for Secure Scuttlebutt

ALPHA version! This is heavily under construction, not ready for real usage.

Built with

Install dependencies

React Native specifics

Use node v8.9.x and npm v5.6.x, and follow the official React Native docs.

Also install the CLI:

npm install --global react-native-cli

macOS specifics

If you are developing on a macOS, then you might need realpath, install it through coreutils:

brew update
brew install coreutils

Android specifics

You need Android Studio and a recent Android SDK (installable through Android Studio).

You may need to open your app's /android folder in Android Studio, so that it detects, downloads and cofigures requirements that might be missing, like the NDK and CMake to build the native code part of the project.

You can also set the environment variable ANDROID_NDK_HOME, as in this example:

export ANDROID_NDK_HOME=/Users/username/Library/Android/sdk/ndk-bundle

Also check out nodejs-mobile repository for the necessary prerequisites for your system.

This app (theoretically) supports Android 4.4 and above.

MMMMM specifics

npm install

Build and run in development

You can run npm run build-android-debug which will run all the necessary scripts in order. Or run each step manually:

1: Compile TypeScript files

npm run lib

2: Propagate replacement modules throughout all dependencies using propagate-replacement-fields:

npm run propagate-replacements

3: Build the "backend" Node.js project (which runs Scuttlebot):

npm run build-nodejs-app

4: Build the worker thread subproject:

npm run build-worker-android

5: Then build the Android apk:

react-native run-android

During step 5, another terminal may spawn with the React Native Metro bundler. The app should be installed automatically, if you have a device connected by USB. You can see the logs with react-native log-android or adb logcat.

Continuous compilation

To watch source code files and continuously compile them, use three terminals:

There is no support for continuously compiling the worker thread nor the backend Node.js project.


On Android applications, the react-native build process is sometimes unable to rebuild assets. If you are getting errors while building the application using react-native run-android, then the command npm run full-clean can help you do a clean rebuild of the project. Then, reinstall with npm install and rebuild.

NullPointerException on npm run build-nodejs-app

If you see the error below while running the build-nodejs-app build script, you should try opening this project's android folder in android studio (using the build.gradle file to tell android studio it is a gradle project.) It should detect missing dependencies and give you the option to install them via the console window (and rebuild) at the bottom of the window.

Building native modules for armeabi-v7a...
Incremental java compilation is an incubating feature.

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:_debugApk'.
   > A problem occurred configuring project ':nodejs-mobile-react-native'.
      > java.lang.NullPointerException (no error message)

Integration tests

We use Appium and Tape, just plug in a device through USB and run npm run test-e2e-android. This will run tests on top of the release variant of the app, so it that doesn't exist, you must run npm run build-android-release first.


To build a release APK, follow these instructions, in short:

  1. Put the correct file my-release-key.keystore in the folder android/app/
  2. Configure the file ~/.gradle/ with the correct values
  3. Run cd android && ./gradlew assembleRelease (just builds the APK) or npm run release (for official releases)

Built with git-ssb-web