Android Lite 版

Android 開發作業可使用下列 LiteRT 執行階段 API:

  • CompiledModel API:高效能推論的現代標準,可簡化 CPU/GPU/NPU 的硬體加速程序。進一步瞭解為何應選擇 CompiledModel API
  • Interpreter API:基本推論 API,可維持回溯相容性。

開始使用 CompiledModel API

支援的 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));