Android 開發作業可使用下列 LiteRT 執行階段 API:
CompiledModelAPI:高效能推論的現代標準,可簡化 CPU/GPU/NPU 的硬體加速程序。進一步瞭解為何應選擇 CompiledModel API。InterpreterAPI:基本推論 API,可維持回溯相容性。
開始使用 CompiledModel API
如需傳統 ML 模型,請參閱下列示範應用程式。
- 圖片分割 Kotlin 應用程式:CPU/GPU/NPU 推論。
- 圖像分割 C++ 應用程式:使用 async 執行,透過 CPU/GPU/NPU 進行推論。
生成式 AI 模型:請參閱下列範例應用程式:
- EmbeddingGemma 語意相似度 C++ 應用程式: CPU/GPU/NPU 推論。
支援的 Android 版本和 API
| LiteRT 版本 | 狀態 | 支援的 API | 最低 SDK 級別 | 最低 NDK 版本 (如使用) | 發布日期 |
|---|---|---|---|---|---|
v2.1.0 |
✅ 最新 | CompiledModel Interpreter(僅限 CPU) |
23 (Android 6 Marshmallow) |
r26a |
2025-12-19 |
v2.0.3 |
⚠️ 舊版 | CompiledModel |
26 (Android 8 Oreo) |
r26a |
2025-11-08 |
v1.4.1 |
✅ 最新 | Interpreter |
21 (Android 5 Lollipop) |
r26a |
2025-11-07 |
v1.4.0 |
⚠️ 舊版 | Interpreter |
26 (Android 8 Oreo) |
r26a |
2025-06-25 |
v1.3.0 |
⚠️ 舊版 | Interpreter |
21 (Android 5 Lollipop) |
r26a |
2025-05-19 |
v1.2.0 |
⚠️ 舊版 | Interpreter |
21 (Android 5 Lollipop) |
r26a |
2025-03-13 |
重要事項: 請確保依附元件為最新版本,以支援最新功能和安全性更新。
CompiledModel API 快速入門
將 LiteRT Maven 套件新增至 Android 專案:
dependencies {
...
implementation `com.google.ai.edge.litert:litert:2.1.0`
}
將 .tflite 模型與 CompiledModel API 整合。下列程式碼片段顯示 Kotlin 和 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));