89 lines
2.2 KiB
Markdown
89 lines
2.2 KiB
Markdown
# MeshChatX Android App
|
|
|
|
This directory contains the Android app build configuration using Chaquopy to embed the Python MeshChatX server.
|
|
|
|
## Architecture
|
|
|
|
The app uses a **WebView** to display the existing Vue.js frontend. The Python server runs in the background via Chaquopy and serves the web interface on `http://127.0.0.1:8000`.
|
|
|
|
**No Kotlin frontend needed** - we reuse the entire existing Vue.js web frontend!
|
|
|
|
## Prerequisites
|
|
|
|
- Android Studio (latest version)
|
|
- Android SDK with API level 24+ (Android 7.0+)
|
|
- Chaquopy license (free for open source projects, see https://chaquo.com/chaquopy/pricing/)
|
|
|
|
## Setup
|
|
|
|
1. **Initialize Gradle Wrapper** (if not already done):
|
|
|
|
```bash
|
|
task android-init
|
|
```
|
|
|
|
Or manually:
|
|
|
|
```bash
|
|
cd android
|
|
gradle wrapper --gradle-version 8.2
|
|
```
|
|
|
|
2. **Get Chaquopy License**:
|
|
- Sign up at https://chaquo.com/chaquopy/
|
|
- Add your license key to `android/local.properties`:
|
|
```
|
|
chaquopy.license=your-license-key-here
|
|
```
|
|
|
|
3. **Prepare Build**:
|
|
```bash
|
|
task android-prepare
|
|
```
|
|
This will:
|
|
- Build the frontend
|
|
- Copy the `meshchatx` package to `app/src/main/python/`
|
|
- Initialize Gradle wrapper if needed
|
|
|
|
## Building
|
|
|
|
### Using Task (Recommended)
|
|
|
|
```bash
|
|
# Build debug APK
|
|
task android-build
|
|
|
|
# Build release APK (requires signing config)
|
|
task android-build-release
|
|
```
|
|
|
|
### Using Gradle Directly
|
|
|
|
```bash
|
|
cd android
|
|
./gradlew assembleDebug
|
|
```
|
|
|
|
Or open the `android` directory in Android Studio and build from there.
|
|
|
|
## Configuration
|
|
|
|
The server is configured to:
|
|
|
|
- Run on `127.0.0.1:8000` (localhost only)
|
|
- Use HTTPS for local WebView access
|
|
- Run in headless mode (no browser launch)
|
|
|
|
## Notes
|
|
|
|
- The app requires network permissions for RNS/mesh networking
|
|
- Storage permissions are needed for identity and message storage
|
|
- The Python server runs in a background thread
|
|
- The WebView loads the Vue.js frontend after a 2-second delay to allow server startup
|
|
|
|
## Troubleshooting
|
|
|
|
- If the WebView shows a blank page, check logcat for Python errors
|
|
- Ensure all Python dependencies are listed in `app/build.gradle` chaquopy.pip block
|
|
- Some native dependencies (like RNS) may need additional configuration
|