Beta. If none of these solve it, email support@learn.ink
with your framework, the SDK tag you checked out, and the error. We reply quickly to beta
participants.
A login screen appears instead of the content
This is the most common first-run problem, and it almost always means the sign-in token never reached LearnInk. The SDK deliberately falls back to loading LearnInk signed-out rather than showing an error, so a broken token flow looks like a login screen. Work through it in this order:1
Check your backend endpoint directly
Call it with curl, exactly as your app does:You need HTTP 200 and a body containing a
token field. Anything else — 404, 401,
500, a token that is null — is a backend problem, not an SDK problem. See
Step 1 of the WebView setup guide.2
Check the org ID matches the API key
Your API key belongs to one organisation. If the
orgId you passed to the SDK is not
the organisation that key belongs to, the Identify API rejects it. Both must be the
same organisation.3
Log the failure
Implement
onAuthenticationFailed — it receives the exact error from your
fetchToken function, which usually names the problem immediately.4
Check the device can reach your backend
An emulator cannot reach
localhost on your machine — that is the emulator itself.
Use 10.0.2.2 for the Android emulator host, a LAN IP for a physical device, or a
tunnelling tool. If your backend is behind a VPN, the device needs it too.Gradle cannot find ink.learn:learnink-sdk
mavenLocal() is in the wrong place. It must be where your app resolves
dependencies, not where it resolves plugins. In a modern project that is
dependencyResolutionManagement { repositories { … } } in settings.gradle.kts, not
pluginManagement. Confirm the SDK actually published:
0.1.0 directory.
”Gradle requires JVM 17 or later”
Your default JDK is too old. For a one-off command:Nothing renders — blank space where LearnInk should be
Almost always a layout problem: the view has zero height.React Native: LearnInk appears but does not respond to taps
You have rendered it inside a React NativeModal. On the new architecture, touches do
not reach native views hosted in a Modal.
Use a dedicated screen in your navigator, or a conditionally rendered full-screen View:
React Native: red screen mentioning PlatformConstants
adb reverse, so they get the other project’s bundle.
Stop the other dev server, or start yours on a free port and rebuild so the app knows
about it:
React Native: Metro cannot resolve the package
If you installed with a filesystem path rather than the tarball, npm created a symlink and Metro will not follow it without extra configuration. Reinstall from the tarball instead:AbstractMethodError mentioning LearnInkEventListener
You are running a stale build — some classes were compiled against an older version of the
SDK. Clean and rebuild:
The content is stale, or a user seems signed in as someone else
The SDK caches LearnInk content and session state on the device, as any browser would. When your app’s user signs out, clear the LearnInk state too:Content does not appear offline
Work through Offline behaviour first — in particular, the user must have opened LearnInk online at least once on that device. If cached content still does not appear on a device you know has been online, the web app’s offline capability may not be enabled for your organisation yet. Contact support@learn.ink.Inspecting what is actually happening
The SDK enables WebView debugging automatically for debug builds of your app. With the device connected:1
Open chrome://inspect in desktop Chrome
Your app’s WebView appears in the list.
2
Click inspect
You get full DevTools for the LearnInk page.
3
Check the Network tab
Confirm the page URL carries a
token parameter. If it does not, the token never
reached the SDK — go back to the login screen section above.4
Check the Application tab
Under Cache Storage you can see exactly what has been downloaded for offline use.
Reporting a problem
Email support@learn.ink with:- Your framework and version (
flutter --version,npx react-native --version, or AGP/Kotlin versions) - The SDK tag you checked out (e.g.
v0.1.0) - What you expected and what happened
- Any output from
onAuthenticationFailedoronWebResourceError - A logcat extract if the app crashed