Die folgenden LiteRT-Laufzeit-APIs sind für die Android-Entwicklung verfügbar:
CompiledModel-API: Der moderne Standard für leistungsstarke Inferenz, der die Hardwarebeschleunigung über CPU/GPU/NPU hinweg optimiert. Weitere Informationen zur CompiledModel APIInterpreterAPI: Die grundlegende Inferenz-API, die aus Gründen der Abwärtskompatibilität beibehalten wird.
Erste Schritte mit der CompiledModel API
Klassische ML-Modelle: Die folgenden Demo-Apps sind verfügbar.
- Kotlin-App für die Bildsegmentierung: CPU-/GPU-/NPU-Inferenz.
- C++-App für die Bildsegmentierung: CPU-/GPU-/NPU-Inferenz mit asyner Ausführung.
Für GenAI-Modelle finden Sie die folgenden Demo-Apps:
- C++-App zur semantischen Ähnlichkeit von EmbeddingGemma: CPU-/GPU-/NPU-Inferenz.
Unterstützte Android-Versionen und APIs
| LiteRT-Version | Status | Unterstützte API | Min. SDK-Level | Mindest-NDK-Version (falls verwendet) | Veröffentlicht am |
|---|---|---|---|---|---|
v2.1.0 ⭐ |
✅ Aktuell | CompiledModel Interpreter(nur CPU) |
23 (Android 6 Marshmallow) |
r26a |
Noch nicht veröffentlicht |
v2.0.3 ⭐ |
⚠️ Veraltet | CompiledModel |
26 (Android 8 Oreo) |
r26a |
08.11.2025 |
v1.4.1 ⭐ |
✅ Aktuell | Interpreter |
21 (Android 5 Lollipop) |
r26a |
07.11.2025 |
v1.4.0 ⭐ |
⚠️ Veraltet | Interpreter |
26 (Android 8 Oreo) |
r26a |
25.06.2025 |
v1.3.0 ⭐ |
⚠️ Veraltet | Interpreter |
21 (Android 5 Lollipop) |
r26a |
19.05.2025 |
v1.2.0 ⭐ |
⚠️ Veraltet | Interpreter |
21 (Android 5 Lollipop) |
r26a |
2025-03-13 |
Wichtig:Halten Sie Ihre Abhängigkeiten auf dem neuesten Stand, um die Kompatibilität mit den neuesten Funktionen und Sicherheitsupdates zu gewährleisten.
Kurzanleitung für die CompiledModel API
Die Ausführung der Inferenz mit der Compiled Model API umfasst die folgenden wichtigen Schritte:
- Laden Sie ein kompatibles Modell.
- Weisen Sie die Eingabe- und Ausgabetensorpuffer zu.
- Kompiliertes Modell aufrufen
- Lesen Sie die Inferenz in einen Ausgabepuffer.
Die folgenden Code-Snippets zeigen eine grundlegende Implementierung des gesamten Prozesses in Kotlin und C++.
Kotlin
// Load model and initialize runtime
val compiledModel = CompiledModel.create(
"/path/to/mymodel.tflite",
CompiledModel.Options(Accelerator.CPU))
// Preallocate input/output buffers
val inputBuffers = compiledModel.createInputBuffers()
val outputBuffers = compiledModel.createOutputBuffers()
// Fill the input buffer
inputBuffers.get(0).writeFloat(input0)
inputBuffers.get(1).writeFloat(input1)
// Invoke
compiledModel.run(inputBuffers, outputBuffers)
// Read the output
val output = outputBuffers.get(0).readFloat()
C++
// Load model and initialize runtime
LITERT_ASSIGN_OR_RETURN(auto env, GetEnvironment());
LITERT_ASSIGN_OR_RETURN(auto options, GetOptions());
LITERT_ASSIGN_OR_RETURN(
auto compiled_model,
CompiledModel::Create(env, "/path/to/mymodel.tflite", options));
// Preallocate input/output buffers
LITERT_ASSIGN_OR_RETURN(auto input_buffers,compiled_model.CreateInputBuffers(signature_index));
LITERT_ASSIGN_OR_RETURN(auto output_buffers,compiled_model.CreateOutputBuffers(signature_index));
// Fill the input buffer
LITERT_ABORT_IF_ERROR(input_buffers[0].Write(input0));
LITERT_ABORT_IF_ERROR(input_buffers[1].Write(input1));
// Invoke
LITERT_ABORT_IF_ERROR(compiled_model.Run(signature_index, input_buffers, output_buffers));
// Read the output
LITERT_ABORT_IF_ERROR(output_buffers[0].Read(output0));