zello-troubleshooting
Diagnose and fix Zello SDK build errors, runtime issues, Expo Go incompatibility, EAS build failures, Metro cache problems, and audio/permission issues in EnforcementMAPS.
Files1
View on GitHubSKILL.md.claude/skills/use-zello/zello-troubleshooting/SKILL.md
GitHubZello Troubleshooting
This skill covers common issues when building and running the Zello SDK in the EnforcementMAPS Expo managed workflow.
Build Errors
Hilt / Dagger Annotation Processor Failure
error: [Hilt] ProcessedRootSentinel(...)
Why: Zello's native Android SDK uses Hilt internally. The Expo managed workflow may not configure the kapt/ksp annotation processor by default.
Fix: Ensure expo-build-properties is installed and configured:
['expo-build-properties', {
android: {
kotlinVersion: '1.9.24',
enableProguardInReleaseBuilds: true,
},
}],
Maven Repository Not Found
Could not resolve com.zello:zello-sdk
Why: The Zello Maven repo (https://zello.jfrog.io/artifactory/maven/) wasn't added.
Fix: The RN SDK's build.gradle should handle this via autolinking. If not, create a custom Expo config plugin to add the Maven URL. Check that @zelloptt/react-native-zello-sdk is in node_modules/ and re-run pnpm install.
Duplicate Class Errors
Duplicate class kotlin.collections.jdk8.*
Fix: Add packaging options via expo-build-properties:
android: {
packagingOptions: {
pickFirst: ['**/kotlin/**'],
},
},
Runtime Errors
"Zello is not connected" When Sending PTT
Why: Zello.send() called before onConnected event fired.
Fix: Guard PTT actions on connection state from the useZelloStatus() hook. Disable the PTT button until connected === true.
No Audio on Incoming Message
Why: Audio focus not acquired, or device volume at zero.
Fix: Check device volume. The SDK manages audio focus, but other apps (especially expo-notifications sounds) may interfere. Avoid playing notification sounds during active PTT.
Microphone Permission Denied Silently
Why: On Android 11+, after two denials the OS stops showing the permission prompt.
Fix: Detect NEVER_ASK_AGAIN state and direct the user to Settings → App Permissions with a clear, jargon-free message.
Expo-Specific Issues
"Cannot use native module in Expo Go"
Expected behaviour. The Zello SDK is a native module and requires an EAS dev build. It will never work in Expo Go.
eas build --platform android --profile development
Metro Bundler Cannot Resolve Zello SDK
Fix: Clear Metro cache:
pnpm start --clear
EAS Build Timeout
Why: Zello's native dependencies (Hilt, protobuf) increase build time significantly.
Fix: Increase the resource class in eas.json:
"android": {
"resourceClass": "m-medium"
}
Debugging
Enable SDK Logging
Zello.setLogLevel('debug');
Check Connection State
Zello.Listener.on('onConnectFailed', ({ error }) => {
console.error('[ZELLO] Connection failed:', error);
});
Verify FCM Token Delivery
Check Firebase console → Cloud Messaging → Diagnostics for delivery status to au.melbourne.patrolzones.
Error Handling Pattern
Follow the project's http.ts pattern — log technical details internally, show user-friendly messages externally. The CLAUDE.md rule: "Error messages should be helpful, not technical."
Detailed Documentation
See docs/dev/zello/13-troubleshooting.md for the complete troubleshooting guide.