Ainaa is an Android application built with Kotlin, following MVVM architecture and using dependency injection. It provides advanced features such as VPN, accessibility services, overlays, and integrates with Firebase via Google Services.
- Project Structure
- Features
- Requirements
- Setup
- Folder Overview
- Source Code Overview
- Contributing
- License
Ainaa-android/
├── app/ # Main Android application module
│ ├── build.gradle.kts # App-level Gradle config
│ ├── google-services.json # Required for Firebase
│ ├── proguard-rules.pro # ProGuard config
│ └── src/ # Source code and resources
├── build.gradle.kts # Project-level Gradle config
├── gradle/ # Gradle wrapper and version catalog
├── gradlew, gradlew.bat # Gradle wrapper scripts
├── README.md # Project documentation
├── settings.gradle.kts # Gradle settings
└── ... # Other config and build files
- VPN service and network protection
- Accessibility overlays and custom UI components
- Daily update notifications
- Data management with local and remote sources
- Firebase integration (requires
google-services.json) - MVVM architecture and dependency injection
- Android Studio (latest recommended)
- Google Services: Place a valid
google-services.jsoninapp/ - Internet Access: Required for some features
-
Clone the repository:
git clone https://github.com/yourusername/Ainaa-android.git cd Ainaa-android -
Open in Android Studio.
-
Add
google-services.jsonto theapp/folder.- Obtain this file from your Firebase project.
-
Build and run the app.
- app/: Main application code and resources.
- build/: Build outputs.
- src/: Source code and resources.
- main/: Main source set.
- java/com/mafazaa/ainaa/: Core Kotlin source code.
- res/: App resources (layouts, drawables, etc.)
- AndroidManifest.xml: App manifest.
- test/, androidTest/: Unit and instrumentation tests.
- main/: Main source set.
- gradle/: Gradle version catalog and wrapper.
- build/: Project build outputs.
- AndroidDrawablePainter.kt: Custom drawable painting logic.
- AppActivity.kt: Main activity, entry point for the app UI.
- AppViewModel.kt: ViewModel for managing app state and logic.
- Constants.kt: Constant values.
- ContextUtils.kt: Context utilities.
- Lg.kt: Logging utilities.
- MyApp.kt: Application class.
- PermissionState.kt: Permission state management.
- data/: Data layer (repositories, sources, utilities).
- di/: Dependency injection setup.
- model/: Data models and DTOs.
- receiver/: Broadcast receivers.
- service/: App services and background workers.
- ui/: User interface components.
See the in-file comments and documentation for details on each class and module.
- Fork the repository.
- Create your feature branch (
git checkout -b feature/YourFeature). - Commit your changes.
- Push to the branch.
- Open a pull request.