This folder contains most of the Typescript and Javascript code needed for the Berty Messenger mobile app. The code is organized into packages in ./packages. Only some of them are freestanding.
💡 First, verify you have the relevant requirements 😉
Build and serve mobile UI:
$ make metro.start
Run iOS app in debug mode:
# Generate dependencies (Xcode files, gomobile, etc.):
$ make ios.app_deps
$ make ios.debug
# or setting the device id:
$ IOS_DEVICE="your-emulator-id" make ios.debug
# 💡 You can check available virtual iOS devices with
$ xcrun xctrace list devices
Run Android in debug mode:
# Generate dependencies (Android files, gomobile, etc.):
$ make android.app_deps
$ make android.debug
# Optional if using only one device
# Run this with different Android device IDs
$ ANDROID_DEVICE="your-emulator-id" make android.debug
# 💡 You can check available Android Virtual Devices with
$ adb devices
# Optional if not modifying any .proto file
# Generate files using protobuf
$ make generate
# Optional if using only one device
# Run this with different ports to test with multiple devices
$ BERTY_DAEMON_PORT=1337 make daemon.start
$ BERTY_DAEMON_PORT=1338 make daemon.start
# Web
# Run Berty daemon for the web app
make web.daemon.start
# Run web app in debug mode
$ make web.debug
# Open http://localhost:3002/#/ip4/127.0.0.1/tcp/9092/grpcws in your browser
List of all available commands:
$ make help
- Installing the common dependencies
- Installing the dependencies for IOS
- Installing the dependencies for Android
Install the common dependencies (mandatory)
- Install
asdf
tool version manager following its tutorial.
Warning: if you are using
nvm
you may face some incompatibility issues withasdf
during the build process.
-
Run the initial setup script in the root project's folder:
$ cd berty # root folder $ make asdf.install_tools
If you have an issue related with gpg, eg: "Missing one or more of the following dependencies: tar, gpg" You can try solve this issue using:
$ brew install gpg
Android dev requirements
- An Android app development environment, e.g. Android Studio (Tested with Chipmunk 2021.2.1 .)
- IMPORTANT NOTE: There is a known issue to Support the latest Android Studio (Jellyfish). To solve this we will need to update to the latest React Native version. This could be a lengthy operation and until then, although undesirable, you can mitigate this bug by using Android Studio Chipmunk.
- Android SDK, with the following enabled (in Android Studio Code in
Tools --> SDK Manager
):- SDK Platform "Android 11.0 (R)"
- Android SDK Build-Tools
- LLDB
- NDK version 23.1.7779620 (
export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/23.1.7779620"
) - Cmake
- Android SDK Command-line Tools
- A physical or virtual Android device (in Android Studio,
Tools --> AVD Manager
)
💡 Check you can run all the commands sdkmanager
, emulator
, ndk-bundle
, and adb
(these are binaries in $ANDROID_HOME
subfolders)
Run:
$ cd js
$ make android.app_deps
directory | description |
---|---|
api/ | Interfaces with the Berty golang services |
messenger-app/ | Berty Messenger react root |
i18n/ | Locale support files |
components | React Native components |
go-bridge/ | Berty daemon native module |
grpc-bridge/ | Collection of grpc utilities used to interface with the daemon |
navigation/ | Berty Messenger + react-native-navigation |
redux/ | App state control using React hooks and Context |
styles/ | Generates StyleSheet utilities and styles that conform to our design specs |
We added Storybook into this project to facilitate UI component development and testing. Running Storybook is as simple as executing the command:
$ cd js
$ make storybook
💡 If you encounter a blank page after running the Storybook command, it is recommended to follow these steps:
- Stop metro and close the emulator.
- Open the emulator an the App within it. Press 'R'.
- Run the Storybook command
$ make storybook
. - And then reload the app within the emulator pressing the key 'R'. It will force the app load the new bundle.
Flipper is a tool for debugging iOS, Android and React Native apps. We use it for profiling the app and to recuperate some logs that we don't have in metro.
To allow all features, you have to install flipper 0.162.0
version.
To run it you just have to run the flipper desktop app and select the device application you want.
A known issue is that we are unable to connect our android device. Just verify in the settings of flipper your platform-tools
path is good (https://stackoverflow.com/a/72608113/10961298
).
This is a short video on what it can be expected for the profiler feature (https://www.loom.com/share/0b0353df7e6445ecbbfd6e2e8cca784d
).
In this video we profile the debug app, but we really advise you to profile the release app.