Prerequisites
Before building, ensure you have completed the development environment setup.frontend/ directory.iOS Setup
Install Xcode
Install CocoaPods
Install cargo-lipo
Add iOS targets
Android Setup
Install Android Studio
Install Android SDK
- SDK Platforms: Android 10+ (API 29+)
- SDK Tools: NDK, CMake
Set environment variables
- macOS/Linux
- Windows
Install cargo-ndk
Add Android targets
Building for iOS
Development Build
Build Rust backend
- Compiles Rust as a static library (.a)
- Uses
cargo-lipofor iOS targets - Copies the library to
appflowy_flutter/packages/appflowy_backend/ios/
Install Flutter dependencies
Run on simulator or device
Production Build
Build Rust backend (release)
Build iOS app
Archive and distribute
- Product → Archive
- Distribute App
- Follow App Store Connect workflow
Building for Android
Development Build
Build Rust backend
- Compiles Rust as a shared library (.so)
- Uses
cargo-ndkto build for Android - Copies JNI libs to
appflowy_flutter/android/app/src/main/jniLibs/
Install Flutter dependencies
Run on emulator or device
Production Build
Build Rust backend (release)
Build Android APK
Build Android App Bundle (AAB)
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
Android Targets
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
List available simulators
Launch simulator
Run app
iOS Device
Connect device
Trust computer
Configure signing
Run app
Android Emulator
Create AVD
- Tools → Device Manager
- Create Virtual Device
- Select a device (e.g., Pixel 6)
- Download a system image (Android 10+)
Start emulator
Run app
Android Device
Enable developer options
- Settings → About phone
- Tap “Build number” 7 times
Enable USB debugging
Connect device
Verify connection
Run app
Troubleshooting
iOS Build Fails
- Simulator stdbool.h error
- Pod install fails
- Code signing error
stdbool.h file not found when building for simulator:Android Build Fails
- NDK not found
- Gradle build fails
- Library not found
- Tools → SDK Manager
- SDK Tools tab
- Check “NDK (Side by side)”
- Apply
Hot Reload & Development
Hot Reload
Flutter’s hot reload works on mobile: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
Build and archive
- Open
ios/Runner.xcworkspace - Product → Archive
- Distribute App → App Store Connect
Google Play Store
Create Play Console app
- Create app in Google Play Console
- Configure store listing
- Set up internal testing track
Generate signing key
Configure signing
android/key.properties:Build and upload
build/app/outputs/bundle/release/app-release.aab to Play Console.