mirror of
https://github.com/spacedriveapp/spacedrive.git
synced 2026-02-20 07:37:26 -05:00
* updates * keep common errors * fix selector being empty for english * sort by label * update contributing * update ndk and docs * Update CONTRIBUTING.md
110 lines
3.5 KiB
Plaintext
110 lines
3.5 KiB
Plaintext
---
|
|
index: 1
|
|
---
|
|
|
|
# Environment Setup
|
|
|
|
To get started contributing to Spacedrive, follow this guide carefully.
|
|
|
|
This project uses [Cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html) and [pnpm](https://pnpm.io/installation).
|
|
|
|
## Installation
|
|
|
|
1. **Clone repo**
|
|
```shell
|
|
git clone https://github.com/spacedriveapp/spacedrive && cd spacedrive
|
|
```
|
|
2. **Run setup script**
|
|
|
|
**For Linux or MacOS users run:**
|
|
|
|
```shell
|
|
./scripts/setup.sh
|
|
```
|
|
|
|
This will install FFmpeg and any other required dependencies for Spacedrive to build.
|
|
|
|
**...or for Windows users run using PowerShell:**
|
|
|
|
```shell
|
|
.\scripts\setup.ps1
|
|
```
|
|
|
|
_This will install pnpm, LLVM, FFmpeg and any other required dependencies for Spacedrive to build. Ensure you run it like documented above as it expects it is executed from the root of the repository._
|
|
|
|
3. **Install dependencies**
|
|
```shell
|
|
pnpm i
|
|
```
|
|
4. **Run codegen & build required dependencies**
|
|
```shell
|
|
pnpm prep
|
|
```
|
|
|
|
## Running apps
|
|
|
|
- **Desktop:** `pnpm tauri dev`
|
|
- **Landing:** `pnpm landing dev`
|
|
- **Server:** `DATA_DIR=/path/to/library cargo run -p sdcore`
|
|
- **Webapp:** `pnpm web dev`
|
|
|
|
<Notice
|
|
type="note"
|
|
text="When changing branches, make sure to run `pnpm prep` command right after. This ensures all the codegen is up to date."
|
|
/>
|
|
|
|
### Mobile app
|
|
|
|
To run mobile app
|
|
|
|
1. Install [Android Studio](https://developer.android.com/studio) for Android and [Xcode](https://apps.apple.com/au/app/xcode/id497799835) for IOS development
|
|
2. `./scripts/setup.sh mobile`
|
|
_The should setup most of the dependencies for the mobile app to build._
|
|
3. You must also ensure you have [NDK 26.1.10909125 and CMake](https://developer.android.com/studio/projects/install-ndk#default-version) in Android Studio
|
|
4. `pnpm mobile android` (runs on Android Emulator)
|
|
- In order to have locations working on Android, you must run the following command once the application has been installed for the first time. Otherwise, locations will not work.
|
|
- `adb shell appops set --uid com.spacedrive.app MANAGE_EXTERNAL_STORAGE allow`
|
|
- Run the following commands to access the logs from `sd-core`.
|
|
- `adb shell`
|
|
- Then `run-as com.spacedrive.app` to access the app's directory on device.
|
|
- Run `cd files/logs` and then select the logs with the timestamp of when you ran the app. Ex: `sd.log.2023-11-28`.
|
|
- You can view the logs using `cat [log-name]`. Ex: `cat sd.log.2023-11-28`.
|
|
5. `pnpm mobile ios` (runs on iOS Emulator)
|
|
- `xcrun simctl launch --console booted com.spacedrive.app` allows you to view the console output of the iOS app from `tracing`. However, the application must be built in `debug` mode for this.
|
|
6. `pnpm mobile start` (runs the metro bundler only)
|
|
|
|
### Troubleshooting
|
|
|
|
If you are having issues ensure you are using the following versions of Rust and Node:
|
|
|
|
- Rust version: **1.68.2**
|
|
- Node version: **18**
|
|
|
|
### Seeding data on startup
|
|
|
|
<Notice
|
|
type="note"
|
|
text="You may loose data if your using this feature so please be careful! This only works on development builds for this reason."
|
|
/>
|
|
|
|
You can add a file called `sd_init.json` in the same folder where you start Spacedrive and it can automatically seed data on startup.
|
|
|
|
```json
|
|
{
|
|
"resetOnStartup": false,
|
|
"libraries": [
|
|
{
|
|
"id": "26697dc0-ef06-4b39-ad72-ffe5d5205b61",
|
|
"name": "Oscar's Library",
|
|
"password": "password",
|
|
"resetLocationsOnStartup": true,
|
|
"locations": [
|
|
{
|
|
"path": "/Users/oscar/Pictures/assets"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|