How sagernet/sing-box-for-android works
SFA is an experimental Android client for sing-box. Users import or edit proxy profiles, select a profile, and start the service; the app loads the selected configuration and asks sing-box to start or reload it, using Android VPN support when needed. Separate capabilities include remote control, USB/IP, Taildrop, terminal/SSH, diagnostics, and Xposed-based VPN hiding. Edges are limited to relationships visible in excerpts or the source index; unsampled feature wiring is not inferred.
Main entry points: BoxService.kt Core service · RemoteControlManager.kt Remote control · ProfileManager.kt Profile manager · Settings.kt Settings store
Components 24
App interface
- Main activity
app/src/main/java/io/nekohasekai/sfa/compose/MainActivity.kt - Profile import
app/src/main/java/io/nekohasekai/sfa/compose/screen/configuration/ProfileImportHandler.kt - Profile editor
app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileViewModel.kt - Connections view
app/src/main/java/io/nekohasekai/sfa/compose/screen/connections/ConnectionsViewModel.kt - Tools screens
app/src/main/java/io/nekohasekai/sfa/compose/screen/tools/ToolsScreen.kt
Profiles and settings
- Profile manager
app/src/main/java/io/nekohasekai/sfa/database/ProfileManager.kt - Profile database
app/src/main/java/io/nekohasekai/sfa/database/ProfileDatabase.kt - Settings store
app/src/main/java/io/nekohasekai/sfa/database/Settings.kt
Proxy runtime
- Application setup
app/src/main/java/io/nekohasekai/sfa/Application.kt - Core service
app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt - VPN service
app/src/main/java/io/nekohasekai/sfa/bg/VPNService.kt - Network monitor
app/src/main/java/io/nekohasekai/sfa/bg/DefaultNetworkMonitor.kt - Command client
app/src/main/java/io/nekohasekai/sfa/utils/CommandClient.kt
Integrations and tools
- Remote control
app/src/main/java/io/nekohasekai/sfa/utils/RemoteControlManager.kt - Remote servers
app/src/main/java/io/nekohasekai/sfa/database/RemoteServerManager.kt - Taildrop sending
app/src/main/java/io/nekohasekai/sfa/compose/screen/tools/TaildropSendManager.kt - Taildrop service
app/src/main/java/io/nekohasekai/sfa/bg/TaildropSendService.kt - USB/IP manager
app/src/main/java/io/nekohasekai/sfa/usbip/USBIPManager.kt - USB/IP service
app/src/main/java/io/nekohasekai/sfa/bg/USBIPService.kt - SSH terminal
app/src/main/java/io/nekohasekai/sfa/terminal/TerminalSessionManager.kt - Power reports
app/src/main/java/io/nekohasekai/sfa/bg/PowerReportManager.kt - VPN hide hooks
app/src/main/java/io/nekohasekai/sfa/xposed/hooks/hidevpn/ConnectivityServiceHookHelper.kt - Hook error store
app/src/main/java/io/nekohasekai/sfa/xposed/HookErrorStore.kt
Other components
- Android user
Connections 18
- Android user → Main activity: uses
app/src/main/java/io/nekohasekai/sfa/compose/MainActivity.kt - Profile import → Profile manager: creates profiles
app/src/main/java/io/nekohasekai/sfa/compose/screen/configuration/ProfileImportHandler.kt - Profile manager → Profile database: queries and updates
app/src/main/java/io/nekohasekai/sfa/database/ProfileManager.kt - Core service → Profile manager: loads selected profile
app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt - Core service → Settings store: reads configuration
app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt - Core service → VPN service: uses VPN mode
app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt - VPN service → Settings store: reads VPN options
app/src/main/java/io/nekohasekai/sfa/bg/VPNService.kt - Core service → Network monitor: starts monitor
app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt - Main activity → Remote control: restores control
app/src/main/java/io/nekohasekai/sfa/compose/MainActivity.kt - Remote control → Remote servers: loads server
app/src/main/java/io/nekohasekai/sfa/utils/RemoteControlManager.kt - Remote control → Command client: monitors status
app/src/main/java/io/nekohasekai/sfa/utils/RemoteControlManager.kt - Taildrop sending → Taildrop service: starts service
app/src/main/java/io/nekohasekai/sfa/compose/screen/tools/TaildropSendManager.kt - Taildrop sending → Command client: sends files
app/src/main/java/io/nekohasekai/sfa/compose/screen/tools/TaildropSendManager.kt - USB/IP manager → USB/IP service: starts service
app/src/main/java/io/nekohasekai/sfa/usbip/USBIPManager.kt - SSH terminal → Command client: uses client
app/src/main/java/io/nekohasekai/sfa/terminal/TerminalSessionManager.kt - VPN hide hooks → Hook error store: records errors
app/src/main/java/io/nekohasekai/sfa/xposed/hooks/hidevpn/ConnectivityManager+getNetworkCapabilities.kt - Application setup → Settings store: initializes settings
app/src/main/java/io/nekohasekai/sfa/Application.kt - Application setup → Power reports: configures reports
app/src/main/java/io/nekohasekai/sfa/Application.kt