Skip to content

[ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: Exception: Failed to load libLiteRtLm.so with RTLD_GLOBAL #265

@Michel-Samir

Description

@Michel-Samir

Trying to load litertlm (e.g. gemma3-270m-it-q8.litertlm) using fromAsset (or even fromBundled) in Android

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await FlutterGemma.initialize();
  runApp(const MyApp());
}
class GemmaService {
  InferenceModel? _model;

  Future<void> initModel() async {
    await FlutterGemma.installModel(modelType: ModelType.gemmaIt, fileType: ModelFileType.litertlm).fromAsset('assets/models/gemma3-270m-it-q8.litertlm').install();

    _model = await FlutterGemma.getActiveModel(maxTokens: 1024, preferredBackend: PreferredBackend.cpu);
  }

  Stream<String> askGemmaStream(String prompt) async* {
    if (_model == null) await initModel();

    final chat = await _model!.createChat();
    await chat.addQueryChunk(Message.text(text: prompt, isUser: true));

    // Listen to the async stream
    yield* chat.generateChatResponseAsync().map((response) {
      if (response is TextResponse) {
        return response.token; // Stream each individual token
      } else if (response is ThinkingResponse) {
        return "[Thinking: ${response.content}]";
      }
      return "";
    });
  }

class _ChatScreenState extends State<ChatScreen> {
  final GemmaService _gemma = GemmaService();
  final TextEditingController _controller = TextEditingController();
  String _lastResponse = "";
  bool _isLoading = false;


  void _handleSend() async {
    if (_controller.text.isEmpty) return;

    setState(() {
      _isLoading = true;
      _lastResponse = ""; // Clear previous response
    });

    try {
      final stream = _gemma.askGemmaStream(_controller.text);
      _controller.clear();

      await for (final token in stream) {
        setState(() {
          _lastResponse += token; 
          _isLoading = false; 
        });
      }
    } catch (e) {
      setState(() {
        _lastResponse = "Error: $e";
        _isLoading = false;
      });
    }
  }
}

I added these lines for GPU in AndroidManifest.xml

<application
        android:name="${applicationName}"
        android:icon="@mipmap/ic_launcher">
        <uses-native-library android:name="libOpenCL.so" android:required="false"/>
        <uses-native-library android:name="libOpenCL-car.so" android:required="false"/>
        <uses-native-library android:name="libOpenCL-pixel.so" android:required="false"/>

android\app\build.gradle.kts

android {
    ndkVersion = "28.2.13676358"

    defaultConfig {
            ndk {
                abiFilters.addAll(listOf("arm64-v8a"))
            }
    }
}

Error:

[LiteRtLmFfi] Loading native libraries...
E/flutter ( 906): [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: Exception: Failed to load libLiteRtLm.so with RTLD_GLOBAL
E/flutter ( 906): #0 LiteRtLmFfiClient._ensureBindings (package:flutter_gemma/core/ffi/litert_lm_client.dart:225:9)
E/flutter ( 906): #1 LiteRtLmFfiClient.initialize (package:flutter_gemma/core/ffi/litert_lm_client.dart:286:5)
E/flutter ( 906): #2 FlutterGemmaMobile.createModel (package:flutter_gemma/mobile/flutter_gemma_mobile.dart:379:25)
E/flutter ( 906):
E/flutter ( 906): #3 FlutterGemma.getActiveModel (package:flutter_gemma/core/api/flutter_gemma.dart:257:12)
E/flutter ( 906):
E/flutter ( 906): #4 GemmaService.initModel (package:llm_v2/services/gemma_service.dart:12:14)
E/flutter ( 906):
E/flutter ( 906): #5 GemmaService.askGemmaStream (package:llm_v2/services/gemma_service.dart:36:25)
E/flutter ( 906):
E/flutter ( 906): #6 _ChatScreenState._handleSend (package:llm_v2/screens/chat_screen.dart:46:7)
E/flutter ( 906):

Image

Note:

  • I tried preferredBackend: PreferredBackend.cpu or preferredBackend: PreferredBackend.gpu but both didn't work
  • I tried running using --enable-experiment=native-assets but didn't work also
  • That code works with models with .Task extensions

flutter doctor -v:

Flutter (Channel stable, 3.41.9, on Microsoft Windows [Version 10.0.19045.6466], locale en-US) [5.7s]
    • Flutter version 3.41.9 on channel stable at G:\Flutter_SDK\flutter_windows_3.41.9-stable\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 00b0c91f06 (10 days ago), 2026-04-29 10:03:19 -0700
    • Engine revision 42d3d75a56
    • Dart version 3.11.5
    • DevTools version 2.54.2
    • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android,
      enable-ios, cli-animations, enable-native-assets, omit-legacy-version-file, enable-lldb-debugging,
      enable-uiscene-migration

Android toolchain - develop for Android devices (Android SDK version 35.0.0) [251.8s]
    • Android SDK at G:\Android_SDK\SDK2
    • Platform android-36, build-tools 35.0.0
    • ANDROID_HOME = G:\Android_SDK\SDK2
    • Java binary at: C:\Program Files\Java\jdk-21\bin\java
    • Java version Java(TM) SE Runtime Environment (build 21.0.9+7-LTS-338)
    • All Android licenses accepted.

Device Info:

  • Manufacturer/Brand: Xiaomi
  • Device Model: Mi 9T
  • Android Version: Android 10 QKQ1.190825.002
  • CPU: Octa-core Max 2.2GHz
  • GPU Renderer: Adreno 618
  • Mi 9T (mobile) • c7590258 • android-arm64 • Android 10 (API 29)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions