Common issues and solutions for the User Analytics SDK.
Error Message:
Could not resolve: com.github.nSella10:UserAnalyticsSDK:v1.0.6
Solutions:
// In settings.gradle
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' } // Make sure this is present
}
}
./gradlew clean
./gradlew build --refresh-dependencies
v1.0.6
Error Message:
Manifest merger failed : uses-permission#android.permission.INTERNET was tagged at AndroidManifest.xml
Solution:
<!-- Remove duplicate INTERNET permissions -->
<uses-permission android:name="android.permission.INTERNET" />
Error Message:
❌ API Key not initialized. Call init() first.
Solutions:
// Call this before any other SDK methods
AnalyticsTracker.init("https://d1xb34m3k0zeus.cloudfront.net/", "your_api_key");
// Initialize in onCreate() of your main activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize here
AnalyticsTracker.init("https://d1xb34m3k0zeus.cloudfront.net/", "ak_your_key");
}
Error Message:
❌ Network error sending event: java.net.UnknownHostException
Solutions:
<uses-permission android:name="android.permission.INTERNET" />
// Use correct server URL
AnalyticsTracker.init("https://d1xb34m3k0zeus.cloudfront.net/", "your_api_key");
<!-- In AndroidManifest.xml -->
<application
android:networkSecurityConfig="@xml/network_security_config">
<!-- res/xml/network_security_config.xml -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">d1xb34m3k0zeus.cloudfront.net</domain>
</domain-config>
</network-security-config>
Error Message:
❌ Event failed with code: 401
Solutions:
ak_
ak_827aeb412aed4b23b8260432
// Avoid typos - copy directly from dashboard
String apiKey = "ak_827aeb412aed4b23b8260432"; // Your actual key
AnalyticsTracker.init("https://d1xb34m3k0zeus.cloudfront.net/", apiKey);
Possible Causes:
// Check logs for confirmation
Log.d("AnalyticsTracker", "Event sent successfully");
// Ensure user ID is not null or empty
String userId = UserManager.getCurrentUserId();
if (userId != null && !userId.isEmpty()) {
AnalyticsTracker.trackEvent(userId, "event_name", properties);
}
Solutions:
@Override
protected void onResume() {
super.onResume();
AnalyticsTracker.startScreen("MainActivity");
}
@Override
protected void onPause() {
super.onPause();
AnalyticsTracker.endScreen("user123");
}
// Use same user ID for start and end
private String userId = UserManager.getCurrentUserId();
AnalyticsTracker.startScreen("MainActivity");
// Later...
AnalyticsTracker.endScreen(userId); // Same user ID
Solutions:
// Don't track every scroll event
private long lastScrollTrack = 0;
private void onScroll() {
long now = System.currentTimeMillis();
if (now - lastScrollTrack > 5000) { // 5 second throttle
trackScrollEvent();
lastScrollTrack = now;
}
}
// Instead of tracking every click, batch them
private List<String> clickEvents = new ArrayList<>();
private void onButtonClick(String buttonName) {
clickEvents.add(buttonName);
// Send batch every 10 clicks
if (clickEvents.size() >= 10) {
sendBatchedEvents();
clickEvents.clear();
}
}
// Add this to see detailed SDK logs
if (BuildConfig.DEBUG) {
// SDK automatically logs to Android Log
// Filter by "AnalyticsTracker" tag in Logcat
}
# View only SDK logs
adb logcat -s AnalyticsTracker
# View network logs
adb logcat -s AnalyticsTracker,OkHttp
// Send test event to verify connection
Map<String, Object> testProps = new HashMap<>();
testProps.put("test", true);
testProps.put("timestamp", System.currentTimeMillis());
AnalyticsTracker.trackEvent("test_user", "sdk_test", testProps);
// Test with new user ID
String newUserId = UUID.randomUUID().toString();
AnalyticsTracker.trackEvent(newUserId, "first_launch", properties);
// Test screen time tracking with app switching
// onPause() -> onResume() cycle
adb logcat -s AnalyticsTracker
// Minimal test case
AnalyticsTracker.init("https://d1xb34m3k0zeus.cloudfront.net/", "your_api_key");
Map<String, Object> props = new HashMap<>();
props.put("test", "minimal");
AnalyticsTracker.trackEvent("test_user", "test_event", props);
If issues persist:
Issue: Network requests blocked on Android 9+
Solution:
<!-- Add to AndroidManifest.xml -->
<application
android:usesCleartextTraffic="false"
android:networkSecurityConfig="@xml/network_security_config">
Issue: SDK classes obfuscated in release builds
Solution:
# Add to proguard-rules.pro
-keep class com.analytics.analyticstracker.** { *; }
-keep interface com.analytics.analyticstracker.** { *; }
No breaking changes - just update version:
implementation 'com.github.nSella10:UserAnalyticsSDK:v1.0.6'
Check CHANGELOG.md for version-specific migration notes.
Still having issues? Open an issue on GitHub