Files
aliasvault/docs/misc/dev/mobile-app-development.md
2025-04-25 17:39:50 +02:00

56 lines
1.5 KiB
Markdown

---
layout: default
title: Mobile App Development
parent: Development
grand_parent: Miscellaneous
nav_order: 9
---
# React Native Expo
## MacOS:
Install watchman
```
brew install watchman
```
Run iOS on Simulator:
```
npx expo run:ios
```
Install OpenJDK for Android dev:
```
brew install openjdk@17
# Add to path
sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk
# Test if Java works on CLI
java --version
```
Make sure NDK is installed:
1. Open Android Studio.
2. Go to: `Preferences > Appearance & Behavior > System Settings > Android SDK > SDK Tools tab`.
3. Check NDK (Side by side).
4. Click Apply or OK to install it.
If getting `node` errors in Android studio, close and re-open Android Studio from CLI via:
```
open -a "Android Studio"
```
## Unit tests
TODO: improve documentation further.
The iOS project contains unit tests that test the `VaultStore` native Swift implementation. The `VaultStore` logic is responsible for handling vault encryption/decryption, contains the SQLite client and acts as a proxy for all local queries etc.
In order to test this query logic behavior the tests contain a static encrypted client vault (SQLite database) that is provided to the tests.
This static encrypted database can be (re)generated by running the `src/Tests/AliasVault.E2ETests/Tests/Extensions/TestVaultGeneratorTests.cs` in the .NET solution. This E2E test generates a deterministic vault and saves it to a local temporary file. This file can then be used as the input for these unittests.