How olvid-io/olvid-android works
Olvid is an Android end-to-end encrypted messenger: users manage identities and contacts, exchange messages, and use group, calling, and account features. The README places cryptography, contact/group management, and network communication in a separate Kotlin engine; the app layer supplies messaging and Android integration. The graph includes major capabilities documented in the README and visible in the tree. Some feature links are omitted because their routing was not sampled; dashed links mark unverified relationships.
Main entry points: AppSingleton.java Identity manager · App.java Android app · DiscussionActivity.kt Conversation screen · Message.java Message operations
Components 18
Application
- Android app
obv_messenger/app/src/main/java/io/olvid/messenger/App.java - Identity manager
obv_messenger/app/src/main/java/io/olvid/messenger/AppSingleton.java - Notifications
obv_messenger/app/src/main/java/io/olvid/messenger/notifications/AndroidNotificationManager.java
Messaging
- Engine event handling
obv_messenger/app/src/main/java/io/olvid/messenger/EngineNotificationProcessor.java - Conversation screen
obv_messenger/app/src/main/java/io/olvid/messenger/discussion/DiscussionActivity.kt - Message operations
obv_messenger/app/src/main/java/io/olvid/messenger/databases/entity/Message.java - Contact records
obv_messenger/app/src/main/java/io/olvid/messenger/databases/entity/Contact.java - Group features
obv_messenger/app/src/main/java/io/olvid/messenger/group/components/Routes.kt
Local state
- Unread tracking
obv_messenger/app/src/main/java/io/olvid/messenger/UnreadCountsSingleton.kt - Encrypted app database
obv_messenger/app/src/main/java/io/olvid/messenger/databases/AppDatabase.kt - Storage management
obv_messenger/app/src/main/java/io/olvid/messenger/storage_manager/StorageManagerViewModel.kt
Integrations
- Foreground services
obv_messenger/app/src/main/java/io/olvid/messenger/services/UnifiedForegroundService.java - Web client
obv_messenger/app/src/main/java/io/olvid/messenger/webclient/WebClientManager.java - WebRTC calls
obv_messenger/app/src/main/java/io/olvid/messenger/webrtc/WebrtcCallService.kt - Keycloak identity
obv_messenger/app/src/main/java/io/olvid/messenger/openid/KeycloakManager.kt - Subscriptions
obv_messenger/app/src/full/java/io/olvid/messenger/billing/SubscriptionRepository.kt
Other components
- Messenger user
- Crypto engine
Connections 16
- Messenger user → Android app: opens
- Android app → Identity manager: initializes
obv_messenger/app/src/main/java/io/olvid/messenger/AppSingleton.java - Identity manager → Crypto engine: configures
obv_messenger/app/src/main/java/io/olvid/messenger/AppSingleton.java - Messenger user → Conversation screen: opens
- Conversation screen → Message operations: uses
- Message operations → Crypto engine: posts payload
obv_messenger/app/src/main/java/io/olvid/messenger/databases/entity/Message.java - Engine event handling → Encrypted app database: processes events
obv_messenger/app/src/main/java/io/olvid/messenger/EngineNotificationProcessor.java - Identity manager → Unread tracking: initializes
obv_messenger/app/src/main/java/io/olvid/messenger/AppSingleton.java - Unread tracking → Encrypted app database: loads counts
obv_messenger/app/src/main/java/io/olvid/messenger/UnreadCountsSingleton.kt - Messenger user → Contact records: manages
- Messenger user → Group features: manages
- Foreground services → Web client: controls
obv_messenger/app/src/main/java/io/olvid/messenger/services/UnifiedForegroundService.java - Messenger user → WebRTC calls: starts
- Messenger user → Storage management: explores
- Messenger user → Keycloak identity: authenticates
- Messenger user → Subscriptions: subscribes