Skip to content

Commit 0db720b

Browse files
committed
Merge branch 'fix/android-windows-build-docs' of https://github.com/Akhash16/AppFlowy into fix/android-windows-build-docs
2 parents c3c8390 + 4bca4e5 commit 0db720b

File tree

5 files changed

+88
-12
lines changed

5 files changed

+88
-12
lines changed

doc/BUILD_FROM_SOURCE.md

Lines changed: 68 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,74 @@ The iOS app will be built and available in `frontend/appflowy_flutter/build/ios/
8484
- [Android NDK](https://developer.android.com/ndk/downloads/) version 24
8585
- cargo-ndk: `cargo install cargo-ndk`
8686

87-
#### Detailed Setup Instructions
88-
89-
For comprehensive Android build setup including Windows support, please refer to the [Android-specific build guide](../frontend/appflowy_flutter/android/README.md) which covers:
90-
91-
- Platform-specific environment variable setup
92-
- Cargo configuration for all operating systems
93-
- NDK 24 clang fixes
94-
- Path configuration
95-
- Troubleshooting common issues
87+
**Additional Setup:**
88+
89+
1. **Set Environment Variables**
90+
91+
**Windows:**
92+
```cmd
93+
set ANDROID_NDK_HOME=C:\Users\%USERNAME%\AppData\Local\Android\Sdk\ndk\24.0.8215888
94+
```
95+
96+
**macOS/Linux:**
97+
```bash
98+
export ANDROID_NDK_HOME=~/Android/Sdk/ndk/24.0.8215888
99+
```
100+
101+
2. **Configure Cargo for Android**
102+
103+
Create or edit `~/.cargo/config` (Linux/macOS) or `%USERPROFILE%\.cargo\config` (Windows):
104+
105+
**Linux/macOS:**
106+
```toml
107+
[target.aarch64-linux-android]
108+
ar = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
109+
linker = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang"
110+
111+
[target.armv7-linux-androideabi]
112+
ar = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
113+
linker = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi29-clang"
114+
115+
[target.i686-linux-android]
116+
ar = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
117+
linker = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android29-clang"
118+
119+
[target.x86_64-linux-android]
120+
ar = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
121+
linker = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android29-clang"
122+
```
123+
124+
**Windows:**
125+
```toml
126+
[target.aarch64-linux-android]
127+
ar = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\llvm-ar.exe"
128+
linker = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\aarch64-linux-android29-clang.exe"
129+
130+
[target.armv7-linux-androideabi]
131+
ar = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\llvm-ar.exe"
132+
linker = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\armv7a-linux-androideabi29-clang.exe"
133+
134+
[target.i686-linux-android]
135+
ar = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\llvm-ar.exe"
136+
linker = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\i686-linux-android29-clang.exe"
137+
138+
[target.x86_64-linux-android]
139+
ar = "C:\\Users\\%USERNAME%\\AppData\\Local\\Android\\Sdk\\ndk\\24.0.8215888\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\llvm-ar.exe"
140+
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"
141+
```
142+
143+
3. **NDK 24 Clang Fix**
144+
145+
Create a file named `libgcc.a` with this content:
146+
```
147+
INPUT(-lunwind)
148+
```
149+
150+
**Linux/macOS:** Place it in `Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/lib/linux/`
151+
152+
**Windows:** Place it in `Android\Sdk\ndk\24.0.8215888\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\14.0.1\lib\linux\`
153+
154+
Copy this file to the following subdirectories: `aarch64`, `arm`, `i386`, and `x86_64`.
96155

97156
#### Build Steps
98157
```bash

frontend/appflowy_flutter/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ To contribute to `AppFlowy_Flutter` codebase specifically (coding contribution)
3232

3333
### What OS should I use for development?
3434

35-
We support all OS for Development i.e. Linux, macOS and Windows. We have detailed documentation on how to setup `AppFlowy_Flutter` on your local system for each operating system:
35+
We support all OS for Development i.e. Linux, MacOS and Windows. We have detailed documentation on how to setup `AppFlowy_Flutter` on your local system for each operating system:
3636

3737
- [Build from Source Guide](../../doc/BUILD_FROM_SOURCE.md) - Comprehensive setup instructions for all platforms
3838
- [Android-specific Guide](android/README.md) - Detailed Android build instructions including Windows support
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package io.appflowy.appflowy
2+
3+
import io.flutter.embedding.android.FlutterActivity
4+
5+
class MainActivity: FlutterActivity()
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!-- Modify this file to customize your launch splash screen -->
3+
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
4+
<item android:drawable="@android:color/white" />
5+
6+
<!-- You can insert your own image assets here -->
7+
<!-- <item>
8+
<bitmap
9+
android:gravity="center"
10+
android:src="@mipmap/launch_image" />
11+
</item> -->
12+
</layer-list>

frontend/scripts/makefile/mobile.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,10 @@ script = [
106106
cd rust-lib
107107
if eq ${BUILD_FLAG} debug
108108
echo "🚀 🚀 🚀 Building Android SDK for debug"
109-
exec cargo ndk -t arm64-v8a -t armeabi-v7a -o ./jniLibs build --features "${FLUTTER_DESKTOP_FEATURES}" --package=dart-ffi
109+
exec cargo ndk -t arm64-v8a -o ./jniLibs build --features "${FLUTTER_DESKTOP_FEATURES}" --package=dart-ffi
110110
else
111111
echo "🚀 🚀 🚀 Building Android SDK for release"
112-
exec cargo ndk -t arm64-v8a -t armeabi-v7a -o ./jniLibs build --features "${FLUTTER_DESKTOP_FEATURES}" --package=dart-ffi --release
112+
exec cargo ndk -t arm64-v8a -o ./jniLibs build --features "${FLUTTER_DESKTOP_FEATURES}" --package=dart-ffi --release
113113
end
114114
cd ..
115115
""",

0 commit comments

Comments
 (0)