# TensorFlow Lite in Google Play services C API (Beta) Beta: TensorFlow Lite in Google Play services C API is currently in Beta. TensorFlow Lite in Google Play services runtime allows you to run machine learning (ML) models without statically bundling TensorFlow Lite libraries into your app. This guide provide instructions on how to use the C APIs for Google Play services. Before working with the TensorFlow Lite in Google Play services C API, make sure you have the [CMake](https://cmake.org/) build tool installed. ## Update your build configuration Add the following dependencies to your app project code to access the Play services API for TensorFlow Lite: ``` implementation "com.google.android.gms:play-services-tflite-java:16.2.0-beta02" ``` Then, enable the [Prefab](https://developer.android.com/build/dependencies#build-system-configuration) feature to access the C API from your CMake script by updating the android block of your module's build.gradle file: ``` buildFeatures { prefab = true } ``` You finally need to add the package `tensorflowlite_jni_gms_client` imported from the AAR as a dependency in your CMake script: ``` find_package(tensorflowlite_jni_gms_client REQUIRED CONFIG) target_link_libraries(tflite-jni # your JNI lib target tensorflowlite_jni_gms_client::tensorflowlite_jni_gms_client android # other deps for your target log) # Also add -DTFLITE_IN_GMSCORE -DTFLITE_WITH_STABLE_ABI # to the C/C++ compiler flags. add_compile_definitions(TFLITE_IN_GMSCORE) add_compile_definitions(TFLITE_WITH_STABLE_ABI) ``` ## Initialize the TensorFlow Lite runtime Before calling the TensorFlow Lite Native API you must initialize the `TfLiteNative` runtime in your Java/Kotlin code.
Task tfLiteInitializeTask = TfLiteNative.initialize(context);
val tfLiteInitializeTask: Task= TfLiteNative.initialize(context)
package com.google.samples.gms.tflite.c;
public class TfLiteJni {
static {
System.loadLibrary("tflite-jni");
}
public TfLiteJni() { /**/ };
public native void loadModel(AssetManager assetManager, String assetName);
public native float[] runInference(float[] input);
}
package com.google.samples.gms.tflite.c
class TfLiteJni() {
companion object {
init {
System.loadLibrary("tflite-jni")
}
}
external fun loadModel(assetManager: AssetManager, assetName: String)
external fun runInference(input: FloatArray): FloatArray
}
tfLiteHandleTask.onSuccessTask(unused -> {
TfLiteJni jni = new TfLiteJni();
jni.loadModel(getAssets(), "add.bin");
//...
});
tfLiteHandleTask.onSuccessTask {
val jni = TfLiteJni()
jni.loadModel(assets, "add.bin")
// ...
}