Prerequisites
Before building, ensure you have completed the development environment setup.All commands should be run from the
frontend/ directory.iOS Setup
Install Xcode
Download and install Xcode from the App Store or developer.apple.com.
Android Setup
Install Android Studio
Download from developer.android.com.
Install Android SDK
Through Android Studio:
- SDK Platforms: Android 10+ (API 29+)
- SDK Tools: NDK, CMake
Building for iOS
Development Build
Build Rust backend
For iOS device (ARM64):For iOS simulator (Apple Silicon):This command:
- Compiles Rust as a static library (.a)
- Uses
cargo-lipofor iOS targets - Copies the library to
appflowy_flutter/packages/appflowy_backend/ios/
Production Build
iOS builds use staticlib (.a) format for compatibility with iOS apps.
Building for Android
Development Build
Build Rust backend
For ARM64 devices (most common):This command:
- Compiles Rust as a shared library (.so)
- Uses
cargo-ndkto build for Android - Copies JNI libs to
appflowy_flutter/android/app/src/main/jniLibs/
Production Build
Android builds use cdylib (.so) format as JNI shared libraries.
Multi-Architecture Builds
iOS Universal Library
For supporting multiple iOS architectures:Android Multi-ABI
For CI/production builds supporting multiple architectures:arm64-v8a(ARM64) - Modern devicesarmeabi-v7a(ARMv7) - Older devices
Build Targets
iOS Targets
| Target | Architecture | Use Case |
|---|---|---|
aarch64-apple-ios | ARM64 | iOS devices (iPhone, iPad) |
aarch64-apple-ios-sim | ARM64 | iOS simulator on Apple Silicon Macs |
x86_64-apple-ios | x86_64 | iOS simulator on Intel Macs |
Android Targets
| Target | Architecture | Use Case |
|---|---|---|
aarch64-linux-android | ARM64 | Modern Android devices (2019+) |
armv7-linux-androideabi | ARMv7 | Older Android devices |
ARMv7 support may be deprecated in future versions. ARM64 covers 95%+ of active Android devices.
Platform-Specific Configuration
iOS Configuration
Minimum iOS Version: 11.0 Inappflowy_flutter/ios/Podfile:
ios/Runner/Info.plist:
Android Configuration
Minimum Android Version: API 29 (Android 10) Inappflowy_flutter/android/app/build.gradle:
android/app/src/main/AndroidManifest.xml:
Device Testing
iOS Simulator
iOS Device
Configure signing
Open Xcode and configure automatic signing:Select your team in Signing & Capabilities.
Android Emulator
Create AVD
In Android Studio:
- Tools → Device Manager
- Create Virtual Device
- Select a device (e.g., Pixel 6)
- Download a system image (Android 10+)
Android Device
Troubleshooting
iOS Build Fails
- Simulator stdbool.h error
- Pod install fails
- Code signing error
If you see Then rebuild:
stdbool.h file not found when building for simulator:Android Build Fails
- NDK not found
- Gradle build fails
- Library not found
Install NDK through Android Studio:
- Tools → SDK Manager
- SDK Tools tab
- Check “NDK (Side by side)”
- Apply
Hot Reload & Development
Hot Reload
Flutter’s hot reload works on mobile:Hot reload only works for Dart code changes. Rust changes require a full rebuild.
Debugging
- Flutter DevTools
- iOS Logs
- Android Logs
App Distribution
iOS App Store
Configure App Store Connect
- Create app in App Store Connect
- Configure metadata, screenshots
- Set up TestFlight for beta testing
Google Play Store
Create Play Console app
- Create app in Google Play Console
- Configure store listing
- Set up internal testing track
Next Steps
Testing
Learn how to run tests
Contributing
Contribute your changes
Building Desktop
Build for desktop platforms
Code Style
Follow coding conventions