- OAuth authentication via Authentik - WebSocket connection to OpenClaw gateway - Configurable gateway URL with first-run setup - User preferences sync across devices - Multi-user support with custom assistant names - ElevenLabs TTS integration (local + remote) - FCM push notifications for alarms - Voice input via Google Speech API - No hardcoded secrets or internal IPs in tracked files
226 lines
4.8 KiB
Markdown
226 lines
4.8 KiB
Markdown
# Alfred Mobile - Build Instructions
|
|
|
|
## Quick Start
|
|
|
|
### Environment Variables
|
|
|
|
Before building, set these environment variables:
|
|
|
|
```bash
|
|
export JAVA_HOME=~/android-dev/jdk-17.0.2
|
|
export ANDROID_HOME=~/android-dev/android-sdk
|
|
export PATH=$JAVA_HOME/bin:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH
|
|
```
|
|
|
|
### Build Commands
|
|
|
|
```bash
|
|
# Navigate to project
|
|
cd ~/.openclaw/workspace/alfred-mobile
|
|
|
|
# List available tasks
|
|
./gradlew tasks
|
|
|
|
# Build debug APK
|
|
./gradlew assembleDebug
|
|
|
|
# Build release APK (requires signing config)
|
|
./gradlew assembleRelease
|
|
|
|
# Run unit tests
|
|
./gradlew test
|
|
|
|
# Clean build
|
|
./gradlew clean
|
|
|
|
# Check project dependencies
|
|
./gradlew dependencies
|
|
```
|
|
|
|
### Build Output
|
|
|
|
Debug APK will be located at:
|
|
```
|
|
app/build/outputs/apk/debug/app-debug.apk
|
|
```
|
|
|
|
Release APK will be located at:
|
|
```
|
|
app/build/outputs/apk/release/app-release-unsigned.apk
|
|
```
|
|
|
|
## Installing on Device
|
|
|
|
### Via ADB (Android Debug Bridge)
|
|
|
|
```bash
|
|
# List connected devices
|
|
adb devices
|
|
|
|
# Install debug APK
|
|
adb install app/build/outputs/apk/debug/app-debug.apk
|
|
|
|
# Or use Gradle
|
|
./gradlew installDebug
|
|
|
|
# Uninstall
|
|
adb uninstall com.openclaw.alfred
|
|
```
|
|
|
|
## Development on Windows
|
|
|
|
If you prefer to use Android Studio on Windows:
|
|
|
|
1. **Install Android Studio** from https://developer.android.com/studio
|
|
|
|
2. **Clone the repository** (in Windows, not WSL):
|
|
```cmd
|
|
cd C:\Development
|
|
git clone https://repo.anhonesthost.net/jknapp/alfred-mobile.git
|
|
```
|
|
|
|
3. **Open in Android Studio**:
|
|
- File → Open → Select alfred-mobile folder
|
|
- Wait for Gradle sync to complete
|
|
- Click Run button or press Shift+F10
|
|
|
|
4. **Configure emulator** (if needed):
|
|
- Tools → Device Manager
|
|
- Create Virtual Device
|
|
- Select a device definition (e.g., Pixel 6)
|
|
- Download system image (API 34 recommended)
|
|
- Launch emulator
|
|
|
|
## Troubleshooting
|
|
|
|
### Gradle Daemon Issues
|
|
```bash
|
|
# Stop all Gradle daemons
|
|
./gradlew --stop
|
|
|
|
# Clean and rebuild
|
|
./gradlew clean build
|
|
```
|
|
|
|
### SDK License Issues
|
|
```bash
|
|
export ANDROID_HOME=~/android-dev/android-sdk
|
|
yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses
|
|
```
|
|
|
|
### Java Version Issues
|
|
```bash
|
|
# Verify Java version (should be 17)
|
|
java -version
|
|
|
|
# If wrong version, ensure JAVA_HOME is set correctly
|
|
export JAVA_HOME=~/android-dev/jdk-17.0.2
|
|
```
|
|
|
|
### Missing Dependencies
|
|
```bash
|
|
# Update SDK components
|
|
sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0"
|
|
```
|
|
|
|
## IDE Configuration
|
|
|
|
### Android Studio Preferences
|
|
|
|
**Gradle JDK**: Set to Java 17
|
|
- File → Settings → Build → Build Tools → Gradle
|
|
- Gradle JDK: Select Java 17
|
|
|
|
**Kotlin Plugin**: Ensure version 1.9.20 or compatible
|
|
|
|
**Code Style**: Kotlin official style guide
|
|
|
|
## Testing
|
|
|
|
### Running Tests
|
|
|
|
```bash
|
|
# Run all tests
|
|
./gradlew test
|
|
|
|
# Run specific test class
|
|
./gradlew test --tests com.openclaw.alfred.ExampleTest
|
|
|
|
# Run tests with coverage
|
|
./gradlew testDebugUnitTestCoverage
|
|
```
|
|
|
|
### UI Tests (Android Instrumentation)
|
|
|
|
```bash
|
|
# Ensure device/emulator is running
|
|
adb devices
|
|
|
|
# Run instrumentation tests
|
|
./gradlew connectedAndroidTest
|
|
```
|
|
|
|
## Signing Configuration (Production)
|
|
|
|
For release builds, create `keystore.properties` in the project root:
|
|
|
|
```properties
|
|
storeFile=/path/to/keystore.jks
|
|
storePassword=your_store_password
|
|
keyAlias=your_key_alias
|
|
keyPassword=your_key_password
|
|
```
|
|
|
|
Then update `app/build.gradle.kts` to load signing config.
|
|
|
|
## Continuous Integration
|
|
|
|
### GitHub Actions / GitLab CI Example
|
|
|
|
```yaml
|
|
build:
|
|
image: openjdk:17-jdk
|
|
before_script:
|
|
- wget -q https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip
|
|
- unzip -q commandlinetools-linux-9477386_latest.zip
|
|
- yes | cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_HOME --licenses
|
|
- cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_HOME "platform-tools" "platforms;android-34" "build-tools;34.0.0"
|
|
script:
|
|
- ./gradlew assembleDebug
|
|
- ./gradlew test
|
|
artifacts:
|
|
paths:
|
|
- app/build/outputs/apk/debug/app-debug.apk
|
|
```
|
|
|
|
## Performance Optimization
|
|
|
|
### Build Performance
|
|
|
|
Add to `gradle.properties`:
|
|
```properties
|
|
org.gradle.daemon=true
|
|
org.gradle.parallel=true
|
|
org.gradle.caching=true
|
|
org.gradle.configureondemand=true
|
|
kotlin.incremental=true
|
|
```
|
|
|
|
### APK Size Reduction
|
|
|
|
- Enable ProGuard/R8 in release builds (already configured)
|
|
- Use APK Analyzer: `Build → Analyze APK...` in Android Studio
|
|
- Enable resource shrinking in `app/build.gradle.kts`
|
|
|
|
## Additional Resources
|
|
|
|
- **Android Documentation**: https://developer.android.com/docs
|
|
- **Jetpack Compose**: https://developer.android.com/jetpack/compose
|
|
- **Kotlin**: https://kotlinlang.org/docs/home.html
|
|
- **Hilt**: https://dagger.dev/hilt/
|
|
- **Material 3**: https://m3.material.io/
|
|
|
|
---
|
|
|
|
**Note**: This project is currently in Phase 1 (scaffold complete). Phase 2 will add OpenClaw integration.
|