This guide provides comprehensive instructions for building AppFlowy from source code on all supported platforms.
Before building AppFlowy, ensure you have the following installed:
- Git
- Rust (1.70 or later)
- Flutter (3.13.19 or later)
- cargo-make - Install with:
cargo install cargo-make
- Visual Studio 2019/2022 with C++ development tools
- vcpkg
- Xcode Command Line Tools:
xcode-select --install
- Build essentials:
sudo apt install build-essential pkg-config libssl-dev - Additional dependencies:
sudo apt install clang cmake ninja-build pkg-config libgtk-3-dev
git clone https://github.com/AppFlowy-IO/AppFlowy.git
cd AppFlowycd frontend
cargo make appflowy-windowscd frontend
cargo make appflowy-macoscd frontend
cargo make appflowy-linuxAfter building, the executable will be located in:
- Windows:
frontend/appflowy_flutter/product/[version]/windows/Release/AppFlowy/ - macOS:
frontend/appflowy_flutter/product/[version]/macos/Release/AppFlowy.app/ - Linux:
frontend/appflowy_flutter/product/[version]/linux/Release/AppFlowy/
- macOS with Xcode installed
- iOS development setup for Flutter
cd frontend
cargo make appflowy-iosThe iOS app will be built and available in frontend/appflowy_flutter/build/ios/.
All Platforms:
- Android NDK version 24
- cargo-ndk:
cargo install cargo-ndk
Additional Setup:
-
Set Environment Variables
Windows:
set ANDROID_NDK_HOME=C:\Users\%USERNAME%\AppData\Local\Android\Sdk\ndk\24.0.8215888
macOS/Linux:
export ANDROID_NDK_HOME=~/Android/Sdk/ndk/24.0.8215888
-
Configure Cargo for Android
Create or edit
~/.cargo/config(Linux/macOS) or%USERPROFILE%\.cargo\config(Windows):Linux/macOS:
[target.aarch64-linux-android] ar = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" linker = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang" [target.armv7-linux-androideabi] ar = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" linker = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi29-clang" [target.i686-linux-android] ar = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" linker = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android29-clang" [target.x86_64-linux-android] ar = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" linker = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android29-clang"
Windows:
[target.aarch64-linux-android] ar = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\llvm-ar.exe" linker = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\aarch64-linux-android29-clang.exe" [target.armv7-linux-androideabi] ar = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\llvm-ar.exe" linker = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\armv7a-linux-androideabi29-clang.exe" [target.i686-linux-android] ar = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\llvm-ar.exe" linker = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\i686-linux-android29-clang.exe" [target.x86_64-linux-android] ar = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\llvm-ar.exe" linker = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\x86_64-linux-android29-clang.exe"
-
NDK 24 Clang Fix
Create a file named
libgcc.awith this content:INPUT(-lunwind)Linux/macOS: Place it in
Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/lib/linux/Windows: Place it in
Android\Sdk\ndk\24.0.8215888\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\14.0.1\lib\linux\Copy this file to the following subdirectories:
aarch64,arm,i386, andx86_64.
cd frontend
cargo make appflowy-androidThe Android APK will be built and available in frontend/appflowy_flutter/build/app/outputs/flutter-apk/.
For faster development builds without optimizations:
cd frontend
cargo make appflowy-dev # Uses platform-specific aliases# iOS development build
cd frontend
cargo make appflowy-ios-dev
# Android development build
cd frontend
cargo make appflowy-android-dev- Flutter Doctor Issues: Run
flutter doctorto check for missing dependencies - Rust Version: Ensure you're using Rust 1.70 or later
- Path Issues: Make sure all tools are in your system PATH
- NDK Issues: Verify ANDROID_NDK_HOME is set correctly
- Ensure Visual Studio C++ tools are installed
- Check that vcpkg is properly configured
- Use PowerShell or Command Prompt, not Git Bash for building
- Ensure Xcode Command Line Tools are installed
- For iOS builds, you need a full Xcode installation
- Install all required system dependencies
- Check that pkg-config can find required libraries
- Check the AppFlowy Documentation
- Join our Discord for community support
- Report issues on GitHub