Analytiks
A lightweight Analytics library that logs events, identifies the user, and dispatches the data at one. 📊
Install / Use
/learn @aminekarimii/AnalytiksREADME
<p align="center">📊 Analytiks</p>
<p align="center"> <strong>A unified Android analytics library that centralizes multiple analytics services</strong> </p> <p align="center"> <a href="https://github.com/aminekarimii/analytiks/actions"> <img alt="Build Status" src="https://github.com/aminekarimii/analytiks/workflows/Android%20CI/badge.svg"/> </a> <a href="https://maven-badges.herokuapp.com/maven-central/io.github.aminekarimii/analytiks"> <img alt="Maven Central" src="https://img.shields.io/maven-central/v/io.github.aminekarimii/analytiks"> </a> <a href="https://github.com/aminekarimii/analytiks/blob/main/LICENSE"> <img alt="License" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"> </a> </p> <p align="center"> <img src="https://user-images.githubusercontent.com/20410115/228402805-3309d17a-0bc5-4404-90f8-20c9b30e33a9.png" alt="Analytiks Banner" width="80%"> </p>📋 Table of Contents
- Overview
- Key Features
- Installation
- Quick Start
- Core Features
- Supported Analytics SDKs
- AnalytiksVisor - Event Monitoring
- Advanced Usage
- Contributing
- Contact
- License
💭 Overview
Analytiks is a powerful Android library designed to simplify analytics integration by centralizing multiple analytics services into a single, unified interface. Instead of managing multiple SDKs and their different APIs, Analytiks provides a consistent way to track events, identify users, and manage analytics across your entire application.
Why Analytiks?
- Single Implementation: Write once, use with multiple analytics providers
- Modular Architecture: Add only the analytics services you need
- Debug-Friendly: Built-in logging for development and testing
- Lightweight: Minimal impact on your app's size and performance
- Easy Migration: Switch between analytics providers without code changes
✨ Key Features
- 🔧 Easy Integration - Single API for multiple analytics services
- 📦 Modular Design - Add only the providers you need
- 🐛 Debug Mode - Console logging for development
- 🚀 Performance Optimized - Minimal overhead and smart batching
- 🔄 Provider Agnostic - Switch providers without changing your code
- 📱 Real-time Monitoring - Built-in event viewer with AnalytiksVisor
Option 1: Using BOM (Recommended)
The BOM (Bill of Materials) automatically includes core modules and manages versions:
dependencies {
// Import the BOM - automatically includes analytiks-core and analytiks
implementation platform('io.github.aminekarimii:analytiks-bom:1.4.0')
// Add addons as needed (without version numbers)
implementation 'io.github.aminekarimii:analytiks-appsflyer'
implementation 'io.github.aminekarimii:analytiks-addon-amplitude'
implementation 'io.github.aminekarimii:analytiks-addon-googleanalytics'
implementation 'io.github.aminekarimii:analytiks-addon-mixpanel'
implementation 'io.github.aminekarimii:analytiks-addon-sentry'
implementation 'io.github.aminekarimii:analytiks-addon-timber'
implementation 'io.github.aminekarimii:analytiks-addon-segment'
}
Option 2: Manual Version Management
If you prefer to manage versions manually:
dependencies {
// Core libraries
implementation 'io.github.aminekarimii:analytiks:1.4.0'
implementation 'io.github.aminekarimii:analytiks-core:1.4.0'
// Analytics Providers (Add as needed)
implementation 'io.github.aminekarimii:analytiks-addon-googleanalytics:1.4.0'
implementation 'io.github.aminekarimii:analytiks-addon-mixpanel:1.4.0'
implementation 'io.github.aminekarimii:analytiks-addon-segment:1.4.0'
implementation 'io.github.aminekarimii:analytiks-addon-amplitude:1.4.0'
implementation 'io.github.aminekarimii:analytiks-appsflyer:1.4.0'
implementation 'io.github.aminekarimii:analytiks-addon-sentry:1.4.0'
implementation 'io.github.aminekarimii:analytiks-addon-timber:1.4.0'
implementation 'io.github.aminekarimii:analytiks-addon-appvisor:1.4.0'
}
Note: Check Maven Central for the latest version.
🚀 Quick Start
1. Initialize Analytiks
In your Activity or Application class:
class MainActivity : AppCompatActivity() {
private lateinit var analytiks: Analytiks
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Build your analytics configuration
analytiks = Analytiks.Builder()
.addClient(GoogleAnalyticsClient()) // Firebase Analytics
.addClient(MixpanelAnalyticsClient(token = "YOUR_MIXPANEL_TOKEN"))
.addClient(
SegmentAnalyticsClient(
token = "YOUR_SEGMENT_TOKEN",
flushIntervalInSeconds = 5,
trackApplicationLifecycleEvents = true
)
)
.addClient(TimberAnalyticsClient()) // For debug logging
.build()
}
}
2. Initialize the Library
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ... configuration above
// Initialize all configured analytics providers
analytiks.initialize(applicationContext)
}
3. Start Tracking Events
// Track a simple event
analytiks.logEvent("user_signup")
// Track an event with properties
analytiks.logEvent(
eventName = "purchase_completed",
properties = mapOf(
"product_id" to "12345",
"price" to 29.99,
"currency" to "USD"
)
)
// Identify a user
analytiks.identify(userId = "user_12345")
// Set user properties
analytiks.setUserProperty("subscription_type", "premium")
// Send all queued events immediately
analytiks.pushAll()
🔧 Core Features
Event Tracking
// Simple event
analytiks.logEvent("button_clicked")
// Event with custom properties
analytiks.logEvent("video_played", mapOf(
"video_id" to "abc123",
"duration" to 120,
"quality" to "HD"
))
User Management
// Identify user with custom ID
analytiks.identify("user_12345")
// Identify with auto-generated UUID
analytiks.identify()
// Set user properties
analytiks.setUserProperty("age", 25)
analytiks.setUserProperty("plan", "premium")
Data Management
// Force send all queued events
analytiks.flush()
// Reset user data and clear queue
analytiks.reset()
🗃 Supported Analytics SDKs
| Service | Status | Implementation Guide | Official Documentation | |---------|--------|---------------------|------------------------| | Google Analytics/Firebase | ✅ Available | Setup Guide | Firebase Docs | | Segment | ✅ Available | Setup Guide | Segment Docs | | Mixpanel | ✅ Available | Setup Guide | Mixpanel Docs | | Amplitude | ✅ Available | Setup Guide | Amplitude Docs | | AppsFlyer | ✅ Available | Setup Guide | AppsFlyer Docs | | Sentry | ✅ Available | Setup Guide | Sentry Docs | | Timber (Local Logging) | ✅ Available | Built-in | Timber GitHub | | Custom Analytics | ✅ Available | Create Custom Addon | - | | Flurry Analytics | 🚧 Coming Soon | - | - | | CleverTap | 🚧 Coming Soon | - | - | | MoEngage | 🚧 Coming Soon | - | - | | Adjust | 🚧 Coming Soon | - | - |
Request New Integrations
Can't find your analytics service? Open an issue with the service name and documentation link.
🔍 AnalytiksVisor - Event Monitoring
AnalytiksVisor provides real-time event monitoring and debugging capabilities, allowing you to see exactly what analytics events are being tracked in your application.
Features
- 📊 Real-time Event Visualization - Monitor events as they happen
- 🕐 Timestamp Tracking - Precise event timing information
- 📋 Event Details - Complete event properties and metadata
- 🚧 Coming Soon: Event sharing and push notifications
Setup
- Add the dependency:
Using BOM (Recommended):
dependencies {
implementation platform('io.github.aminekarimii:analytiks-bom:1.4.0')
implementation 'io.github.aminekarimii:analytiks-addon-appvisor'
}
Or with manual version:
implementation 'io.github.aminekarimii:analytiks-addon-appvisor:1.4.0'
- Initialize with interceptor:
analytiks = Analytiks.Builder()
.addInterceptor(AppVisorActivity.initialize())
.addClient(/* your analytics clients */)
.build()
- Create app shortcut (optional):
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
AnalytiksVisor.createShortcut(this)
}
}
