ARK Drop is designed for easy file transfer. You can use QR codes to quickly send and receive files between devices. This app is part of ARK Framework and uses iroh
to sync data between devices.
Warning
ARK Drop is currently under heavy development and should be used with caution. It has not undergone extensive testing and may contain bugs, vulnerabilities, or unexpected behavior.
ARK Drop is built using Tauri with SvelteKit.
Tauri is a framework for creating small, fast binaries for all major desktop platforms. It allows integration with any frontend framework that compiles to HTML, JavaScript, and CSS. Tauri prioritizes security and provides a detailed architecture guide.
SvelteKit is an application framework built on Svelte. Unlike traditional frameworks, SvelteKit shifts work to a compile step during the build process, resulting in code that directly updates the DOM when the application's state changes, enhancing performance.
You can use either cargo tauri
CLI or npm
CLI commands to run ARK Drop locally.
To install cargo tauri
, run:
cargo install tauri-cli
To start the Tauri development window, run:
npm run tauri dev
or
cargo tauri dev
This command builds the Rust code and opens the webview to display your web app. You can make changes to your web app, and if your tooling supports it, the webview will update automatically, similar to a browser.
Tauri will detect your operating system and build a corresponding bundle. To build the project, run:
npm run tauri build
or
cargo tauri build
This process will build your frontend, compile the Rust binary, gather all external binaries and resources, and produce platform-specific bundles and installers.
For more information about Tauri builds, refer to the Tauri building guide.
Cross compilation building is done easiest via cross library.
Alternatively you can setup the NDK and build manually
Make sure you have added the nessecary targets to build for android
rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android
Build the cdylib for all the targets
cross build -p drop_core --target aarch64-linux-android
cross build -p drop_core --target armv7-linux-androideabi
cross build -p drop_core --target i686-linux-android
cross build -p drop_core --target x86_64-linux-android
Generate the bindings using uniffi for kotlin
cargo run -p uniffi-bingen generate --library target/x86_64-linux-android/debug/libdrop_core.so --language=kotlin --out-dir ./bindings