A native Android security companion app that helps users understand and manage their device's security posture. Built with Clean Architecture (MVVM), Jetpack Compose, and Material 3 Design.
- Scans all installed applications
- Categorizes permissions by risk level (Critical, High, Medium, Low, Safe)
- Calculates risk scores based on permission combinations
- Distinguishes between system and user-installed apps
- Identifies dangerous permission usage patterns
- Root detection
- Storage encryption status
- Screen lock verification
- Developer options detection
- USB debugging status
- Unknown sources installation setting
- Security patch level information
- Android version and device information
- WiFi security analysis (WPA3, WPA2, WEP, Open)
- Open port detection on common ports
- VPN connection status
- Active network connections monitoring
- Local IP address information
- Aggregate security score (0-100)
- Overview of all security categories
- Quick actions for security improvements
- Historical scan results
| Home | App Audit | App Details |
|---|---|---|
![]() |
![]() |
![]() |
| Device Security | Network Scan | Privacy Dashboard |
|---|---|---|
![]() |
![]() |
![]() |
https://github.com/ifahimkhan/ShieldCheck/blob/master/screenshots/video_thumbnail.mp4
![]()
Click the image above to watch the demo video
The app follows Clean Architecture principles with MVVM pattern:
com.fahim.shieldcheck/
├── core/ # Core utilities and constants
│ ├── constants/ # Permission and security constants
│ ├── extensions/ # Kotlin extensions
│ ├── result/ # Result wrapper class
│ ├── security/ # Keystore and encryption helpers
│ └── utils/ # Risk calculator, analyzers
├── data/ # Data layer
│ ├── local/
│ │ ├── datasource/ # Data sources (App, Device, Network)
│ │ ├── db/ # Room database with SQLCipher
│ │ │ ├── converter/ # Type converters
│ │ │ ├── dao/ # Data Access Objects
│ │ │ └── entity/ # Database entities
│ │ └── preferences/ # Encrypted SharedPreferences
│ ├── mapper/ # Entity to domain mappers
│ └── repository/ # Repository implementations
├── di/ # Hilt dependency injection modules
├── domain/ # Domain layer
│ ├── model/ # Domain models
│ ├── repository/ # Repository interfaces
│ └── usecase/ # Use cases
├── presentation/ # Presentation layer
│ ├── common/components/ # Reusable UI components
│ ├── navigation/ # Navigation setup
│ ├── screens/ # Feature screens
│ │ ├── appaudit/ # App permission audit
│ │ ├── devicesecurity/ # Device security check
│ │ ├── home/ # Home dashboard
│ │ ├── network/ # Network security scan
│ │ ├── privacydashboard/# Privacy overview
│ │ └── settings/ # App settings
│ └── theme/ # Material 3 theming
└── worker/ # WorkManager for background scanning
| Category | Technology |
|---|---|
| Language | Kotlin |
| UI Framework | Jetpack Compose |
| Design System | Material 3 |
| Architecture | Clean Architecture + MVVM |
| Dependency Injection | Hilt |
| Database | Room + SQLCipher (encrypted) |
| Async | Kotlin Coroutines & Flow |
| Navigation | Navigation Compose |
| Background Work | WorkManager |
| Security | AndroidX Security-Crypto, Android Keystore |
| Image Loading | Coil |
// Core
androidx-core-ktx: 1.15.0
lifecycle-runtime-ktx: 2.8.7
activity-compose: 1.9.3
// Compose
compose-bom: 2024.09.00
material3
// DI
hilt: 2.51.1
hilt-navigation-compose: 1.2.0
// Database
room: 2.6.1
sqlcipher: 4.5.4
// Navigation
navigation-compose: 2.8.4
// Background
work-manager: 2.9.1
// Security
security-crypto: 1.1.0-alpha06<!-- Query installed packages -->
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
<!-- Usage statistics for permission analysis -->
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
<!-- Network security scanning -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />Note:
QUERY_ALL_PACKAGESrequires justification for Google Play Store submissionPACKAGE_USAGE_STATSrequires user to manually enable in Settings > Apps > Special access > Usage access
Permissions are weighted by their potential privacy/security impact:
| Risk Level | Points | Examples |
|---|---|---|
| Critical | 25 | SMS, Call Log, Contacts, Install Packages |
| High | 15 | Location, Camera, Microphone, Storage |
| Medium | 8 | Calendar, Bluetooth, NFC |
| Low | 3 | Internet, Vibrate, Flashlight |
- Encrypted Database: All scan results are stored in SQLCipher-encrypted Room database
- Secure Key Storage: Encryption keys are stored in Android Keystore
- Encrypted Preferences: Settings stored using EncryptedSharedPreferences
- ProGuard/R8: Release builds use code obfuscation and optimization
- Android Studio Hedgehog or newer
- JDK 17
- Android SDK 35
- Kotlin 2.0.21
- Clone the repository:
git clone https://github.com/yourusername/ShieldCheck.git-
Open in Android Studio
-
Sync Gradle dependencies
-
Build the project:
./gradlew assembleDebug- Run on device/emulator:
./gradlew installDebug./gradlew assembleRelease- minSdk: 26 (Android 8.0 Oreo)
- targetSdk: 35 (Android 15)
- compileSdk: 35
ProGuard rules are configured in app/proguard-rules.pro for:
- Hilt dependency injection
- Room database
- SQLCipher
- Kotlin serialization
ShieldCheck/
├── app/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/fahim/shieldcheck/
│ │ │ ├── res/
│ │ │ └── AndroidManifest.xml
│ │ ├── test/ # Unit tests
│ │ └── androidTest/ # Instrumented tests
│ ├── build.gradle.kts
│ └── proguard-rules.pro
├── gradle/
│ └── libs.versions.toml # Version catalog
├── build.gradle.kts
├── settings.gradle.kts
└── README.md
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Disclaimer: This app is intended for educational and personal security awareness purposes. It does not replace professional security auditing tools or services.





