Docs index: /llms.txt · every page as Markdown: add .md

‹ Platforms

Flutter troubleshooting

Fix Flutter plugin build and runtime errors by symptom.

SymptomCauseFix
UnsatisfiedLinkError on an emulatorthe engines are arm64-v8a onlyrun on a physical arm64 phone
flutter pub get fails: version solving failed, naming bithuman and an SDK versionthe plugin needs Dart 3.11.5 or newerupgrade Flutter to a release that ships Dart 3.11.5 or newer
The app shows a refusal and asks for a secretno API secret, or a rejected oneenter a valid API secret, or build with --dart-define=BITHUMAN_API_SECRET=…
Manifest merge fails on minSdkthe plugin needs minSdk 29, whichever model you useset minSdk = 29 in android/app/build.gradle.kts (Install)
Expression 2 runs slowly on Android, or a library is reported missingthe engines’ native libraries were compressed into the APKset packaging { jniLibs { useLegacyPackaging = true } } (Install)
MissingPluginException from pushAudio on Androida plugin older than 2.6.36: Android had no pushAudioupdate to 2.6.36, or send 24 kHz speech with playSpeakerPCM (Integrate into your app)
On iOS or macOS the lips move but nothing is heardpushAudio drives the lips onlycall audioStart(enableMic: false), then playSpeakerPCM
PlatformException(unsupported) from loadengine: names no engine; on iOS or macOS also Essence 2 below iOS 26 or macOS 26pass engine: 'expression2' or engine: 'essence2'; below iOS 26 or macOS 26, use Expression 2
load or an installer throws BithumanEntitlementExceptionbitHuman refused this API secret for this avatar (refused: true), or could not be asked while the device holds no recent yes for it (refused: false)pass the owning account’s API secret; for refused: false, retry online (Flutter errors)
After a sign-out, the next account can still load the previous account’s avatarsthe app kept the previous secret, or never cleared itcall BithumanAvatar.clearCredentials() at sign-out, and pass each account’s own apiSecret
On iOS or macOS the avatar never becomes readyno API secret, or a refused one: the Apple engines do not throw for itpass a valid apiSecret: to load
load throws BithumanModelRejected (MODEL_REJECTED)the engine refused the avatar filesee Flutter errors
A voice session ends with FORBIDDEN as it startsthe model needs an entitlement: gpt-realtime does (the session’s default before plugin 2.6.36)pass model: 'gpt-realtime-mini', the default in plugin 2.6.36 and newer
A voice session ends with PAYWALL, INSUFFICIENT_BALANCE or PLAN_REQUIREDno minutes, no credits, or the plan does not include itsee Flutter errors
pod install fails on iOS or macOSthe deployment target is below the plugin’s floor: iOS 16.4 and macOS 14.0 from plugin 2.6.37 (2.6.36: iOS 16.0, macOS 26.0)raise the Podfile platform and the Runner targets: platform :ios, '16.4' and IPHONEOS_DEPLOYMENT_TARGET = 16.4; platform :osx, '14.0' and MACOSX_DEPLOYMENT_TARGET = 14.0
The macOS app does not start on macOS 14, naming libonnxruntimeHomebrew’s ONNX Runtime is built for macOS 15bundle an ONNX Runtime built for macOS 14 with the app, or require macOS 15
The avatar shows no new frames after the app was in the backgroundafter 60 seconds in the background (or with no frame taken) the session ends, billed to that point (plugin 2.6.37)nothing to do: frames come back, in a new session, when the app is on screen again
The iOS or macOS build fails, naming the engines’ floor, after updating the pluginPodfile.lock already resolves the pod and the app is below the floor (2.6.37: iOS 16.4, macOS 14.0)raise the targets to the floor, keep $(inherited) in GCC_PREPROCESSOR_DEFINITIONS, then run pod install
The iOS or macOS build cannot find the enginesthe bootstrap step was skippedrun scripts/bootstrap.sh in the plugin’s folder, then build again
A macOS link error names onnxruntime or llamaa Homebrew library the plugin links is missingbrew install onnxruntime; a plugin older than 2.6.37 also needs brew install llama.cpp