97 lines
2.6 KiB
Markdown
97 lines
2.6 KiB
Markdown
# Android Agent Build & Deploy
|
|
|
|
## Prerequisites
|
|
- Android SDK installed (compileSdk 34, minSdk 26)
|
|
- Device connected via USB with USB debugging enabled
|
|
- `adb devices` shows device
|
|
|
|
## Device
|
|
```
|
|
9b2adc22 device
|
|
```
|
|
|
|
## Build Commands
|
|
|
|
### Build Debug APK
|
|
```powershell
|
|
cd D:\www-project\NexusGuard\apps\android-agent
|
|
.\gradlew assembleDebug
|
|
```
|
|
|
|
Output: `app/build/outputs/apk/debug/app-debug.apk`
|
|
|
|
### Install on Device
|
|
```powershell
|
|
adb install -r app\build\outputs\apk\debug\app-debug.apk
|
|
```
|
|
|
|
### Launch App
|
|
```powershell
|
|
adb shell am start -n com.datadunia.nexusguard/.MainActivity
|
|
```
|
|
|
|
### View Logs
|
|
```powershell
|
|
adb logcat -s AgentService GrpcClient Heartbeat TunnelManager Provisioning LogBuffer
|
|
```
|
|
|
|
### Check Device Connection
|
|
```powershell
|
|
adb devices
|
|
```
|
|
|
|
## One-Shot Build + Install + Launch
|
|
```powershell
|
|
cd D:\www-project\NexusGuard\apps\android-agent
|
|
.\gradlew assembleDebug && adb install -r app\build\outputs\apk\debug\app-debug.apk && adb shell am start -n com.datadunia.nexusguard/.MainActivity
|
|
```
|
|
|
|
## Architecture (matches device-agent)
|
|
- **gRPC signaling**: GrpcClient.kt — bidirectional streaming with fallback (HTTPS domain → WG IP → plaintext)
|
|
- **HTTP heartbeat**: Heartbeat.kt — POST /api/v1/heartbeat every 30s (fallback when gRPC down)
|
|
- **Background service**: AgentService.kt — foreground service with notification (START_STICKY)
|
|
- **Tunnel**: TunnelManager.kt — WireGuard via VPNService + GoBackend
|
|
- **HWID**: SHA-256(ANDROID_ID + manufacturer + model + device), persisted in EncryptedSharedPreferences
|
|
- **Provisioning**: Provisioning.kt — HTTP POST /api/v1/provisioning
|
|
- **Auto-start**: BootReceiver.kt — starts agent on device boot
|
|
|
|
## Commands (Agent)
|
|
- gRPC: HelloMessage → ConfigUpdate (full tunnel config + port forwards)
|
|
- gRPC: HeartbeatRequest every 30s → HeartbeatResponse (config_hash + forwards_changed)
|
|
- gRPC: Suspend/Resume/Reconnect/Disconnect from server
|
|
- HTTP heartbeat: fallback when gRPC disconnected
|
|
|
|
## .gitignore (Android artifacts)
|
|
```
|
|
*.aar
|
|
*.apk
|
|
*.aab
|
|
android-agent/app/build/
|
|
android-agent/build/
|
|
android-agent/.gradle/
|
|
android-agent/local.properties
|
|
```
|
|
|
|
## Commit Workflow
|
|
```powershell
|
|
# 1. Build
|
|
cd D:\www-project\NexusGuard\apps\android-agent
|
|
.\gradlew assembleDebug
|
|
|
|
# 2. Install + test
|
|
adb install -r app\build\outputs\apk\debug\app-debug.apk
|
|
adb shell am start -n com.datadunia.nexusguard/.MainActivity
|
|
|
|
# 3. Commit submodule
|
|
cd D:\www-project\NexusGuard\apps\android-agent
|
|
git add -A
|
|
git commit -m "feat: message"
|
|
git push origin main
|
|
|
|
# 4. Commit parent repo
|
|
cd D:\www-project\NexusGuard
|
|
git add apps/android-agent
|
|
git commit -m "chore: update android-agent submodule"
|
|
git push origin main
|
|
```
|