Releases: lokal-app/lens-android-sdk
Release list
v1.2.1
What's new
- Package renamed from
com.behtar.lenstocom.lokalapps.lens - Available on Maven Central — no credentials needed
Migration from 1.1.1
Update your dependencies:
debugImplementation("com.lokalapps.lens:lens:1.2.0")
releaseImplementation("com.lokalapps.lens:lens-noop:1.2.0")v1.1.1
What's Changed
Bug Fixes
- Network Inspector: replaced misleading 0 status code with ERR
OkHttp uses responseCode = 0 as an internal sentinel meaning no HTTP response was received (request was cancelled or failed before a response arrived). Lens was displaying this raw 0 in the request list, detail view status badge, and global search results — which looked like a real HTTP status code. All three display sites now show ERR instead, consistent with how tools like Chucker handle this case.
Upgrade
// Before
debugImplementation("com.behtar.lens:lens:1.1.0")
releaseImplementation("com.behtar.lens:lens-noop:1.1.0")
// After
debugImplementation("com.behtar.lens:lens:1.1.1")
releaseImplementation("com.behtar.lens:lens-noop:1.1.1")v1.1.0
What's New in v1.1.0
Firebase Analytics Validator
The Analytics Inspector now validates every event and user property destined for Firebase against official Firebase limits — the ones that cause silent data loss in BigQuery.
Firebase drops or truncates invalid data without any error or warning. You'd only find out weeks later when your data is missing. Lens now catches this at the source:
- Amber left-border stripe on event cards in the list — instantly visible while scanning
- Violations banner at the top of the event detail view with a plain-English explanation of every issue
- Per-parameter highlighting — offending parameters turn amber with the exact reason inline (e.g.
value is 143 chars (max 100) — Firebase will truncate) - Same treatment for the User Properties tab
Validation covers all limits from the official Firebase docs:
| What | Limit | Consequence |
|---|---|---|
| Event name length | 40 chars | Event dropped |
| Event name characters | [a-zA-Z][a-zA-Z0-9_]* |
Event dropped |
| Reserved event name | Firebase reserved list | Event dropped |
Reserved prefix (firebase_, ga_, google_) |
— | Event dropped |
| Parameters per event | 25 | Extra params dropped |
| Parameter name length | 40 chars | Parameter dropped |
| Parameter name characters | [a-zA-Z][a-zA-Z0-9_]* |
Parameter dropped |
| Reserved parameter name | session_id, user_id, etc. |
Parameter dropped |
| Parameter value length (string) | 100 chars | Value truncated |
| User property name length | 24 chars | Property dropped |
| User property name characters | [a-zA-Z][a-zA-Z0-9_]* |
Property dropped |
| Reserved user property name | Age, Gender, Interest |
Property dropped |
| User property value length (string) | 36 chars | Value truncated |
Only runs for events where destinations contains "FIREBASE" — MoEngage, Adjust, and other destinations are unaffected.
DeepLink Tester — Provider API
Quick Links in the Deep Link Tester are now driven by a provider interface instead of being hardcoded inside the SDK.
class MyDeepLinkProvider : DeepLinkProvider {
override fun getQuickLinks() = listOf(
DeepLink(label = "Home", path = "/home"),
DeepLink(label = "Profile", path = "/profile"),
DeepLink(label = "Payment", path = "/payment"),
)
}
Lens.install(this) {
deepLinks(MyDeepLinkProvider())
}v1.0.0
Initial Release
Core
- Floating bubble overlay (injected into DecorView, no permissions needed)
- 5-tap and shake activation gestures
- Sticky notification with live request/error counts
- Generic key-value settings store
- Remote activation provider (kill switch without app update)
- Header redaction for sensitive HTTP headers
- HAR 1.2 and JSON data export via share sheet
- ANR detection (5s watchdog with main thread stack trace capture)
Built-in Plugins
- Network Inspector (OkHttp interceptor, cURL export, body truncation)
- Global Search (cross-plugin search with 300ms debounce)
- App Info (build, device, session metadata)
- Performance Monitor (FPS via Choreographer, memory via Runtime, jank detection)
- Analytics Inspector (events, user properties, revenue events)
- Exception Tracker (uncaught + handled exceptions, disk persistence)
- Database Inspector (SQLite browser)
- SharedPreferences Editor (view/edit all prefs files)
- Deep Link Tester
- Log Viewer (Timber integration)
- Cache Manager
Optional Plugins (Provider-based)
- Environment Switcher (data-driven from
EnvironmentProvider) - Feature Flags Editor (from
FeatureFlagProvider) - Quick Actions (from
QuickActionsProvider)
Architecture
- Plugin system:
LensPlugin,ComposableLensPlugin,ViewLensPlugin - Pure-Kotlin
:lens-apimodule (zero Android dependencies) - No-op
:lens-noopmodule for release builds - No Hilt/Dagger — internal service locator
- ProGuard consumer rules bundled
- 116 unit tests