How grapheneos/apps works
This is the GrapheneOS Apps app store: users browse and search a repository, inspect package details, and initiate package installation or updates. The tree also shows background update checking and automatic updates, settings, notifications, and an RPC entry point. The sampled code confirms repository retrieval and signature verification, UI navigation and refresh, and installer-session tracking; other subsystem links are limited to what the tree and excerpts support.
Main entry points: PackageStates.kt Package state · RepoRetriever.kt Repository retrieval · MainActivity.kt Main activity · DetailsScreen.kt Package details
Components 24
App interface
- Main activity
app/src/main/java/app/grapheneos/apps/ui/MainActivity.kt - Package screens
app/src/main/java/app/grapheneos/apps/ui/PackagesScreen.kt - Search
app/src/main/java/app/grapheneos/apps/ui/SearchScreen.kt - Package details
app/src/main/java/app/grapheneos/apps/ui/DetailsScreen.kt - Updates screen
app/src/main/java/app/grapheneos/apps/ui/UpdatesScreen.kt - Settings
app/src/main/java/app/grapheneos/apps/ui/SettingsScreen.kt
Repository and state
- Package state
app/src/main/java/app/grapheneos/apps/core/PackageStates.kt - Repository model
app/src/main/java/app/grapheneos/apps/core/Repo.kt - Repository retrieval
app/src/main/java/app/grapheneos/apps/core/RepoRetriever.kt - Signature verifier
app/src/main/java/app/grapheneos/apps/core/FileVerifier.kt - Repository cache
app/src/main/java/app/grapheneos/apps/util/AtomicFile2.kt
Package installation
- Install start
app/src/main/java/app/grapheneos/apps/core/InstallStart.kt - Install task
app/src/main/java/app/grapheneos/apps/core/InstallTask.kt - Installer sessions
app/src/main/java/app/grapheneos/apps/core/InstallerSessions.kt - RPC provider
app/src/main/java/app/grapheneos/apps/RpcProvider.kt
Background operations
- Update preferences
app/src/main/java/app/grapheneos/apps/autoupdate/AutoUpdatePrefs.kt - Update check job
app/src/main/java/app/grapheneos/apps/autoupdate/UpdateCheckJob.kt - Auto-update job
app/src/main/java/app/grapheneos/apps/autoupdate/AutoUpdateJob.kt - Notifications
app/src/main/java/app/grapheneos/apps/Notifications.kt - Download service
app/src/main/java/app/grapheneos/apps/PackageDownloadFgService.kt
Other components
- User
- RPC client
- Android installer
- Repository server
Connections 30
- User → Main activity: opens
- Main activity → Package state: requests refresh
- Main activity → Package screens: navigates
- User → Search: searches
- User → Package details: selects package
- User → Updates screen: reviews updates
- User → Settings: configures
- Package screens → Package state: observes state
- Search → Package state: uses package state
- Package details → Package state: uses package state
- Updates screen → Package state: observes state
- Package state → Repository retrieval: requests repository
- Repository retrieval → Repository server: fetches metadata
- Repository retrieval → Signature verifier: verifies signature
- Repository retrieval → Repository cache: reads and writes
- Repository retrieval → Repository model: parses metadata
- Package state → Repository model: uses repository
- Package details → Install start: starts install
- Install start → Install task: creates task
- Install task → Installer sessions: uses sessions
- Installer sessions → Android installer: manages sessions
- RPC client → RPC provider: calls
- RPC provider → Install start: initiates install
- Settings → Update preferences: configures updates
- Update preferences → Update check job: schedules
- Update preferences → Auto-update job: schedules
- Update check job → Package state: checks repository
- Auto-update job → Package state: checks package state
- Install task → Download service: keeps download alive
- Download service → Notifications: builds notification