Fix no classes found in selective build android library

The output aar file does not contain any java classes, leads to failure when embedded to Android app.

PiperOrigin-RevId: 354438782
Change-Id: I3f1f0df8f90805142dc28c1d6ccf3c704e7a02bd
This commit is contained in:
Thai Nguyen 2021-01-28 18:05:32 -08:00 committed by TensorFlower Gardener
parent b56ed2db95
commit 22070e377a
2 changed files with 26 additions and 13 deletions

View File

@ -854,7 +854,9 @@ def tflite_custom_android_library(
srcs = [],
deps = [],
custom_package = "org.tensorflow.lite",
visibility = ["//visibility:private"]):
visibility = ["//visibility:private"],
include_xnnpack_delegate = True,
include_nnapi_delegate = True):
"""Generates a tflite Android library, stripping off unused operators.
Note that due to a limitation in the JNI Java wrapper, the compiled TfLite shared binary
@ -871,9 +873,17 @@ def tflite_custom_android_library(
custom_package: Name of the Java package. It is required by android_library in case
the Java source file can't be inferred from the directory where this rule is used.
visibility: Visibility setting for the generated target. Default to private.
include_xnnpack_delegate: Whether to include the XNNPACK delegate or not.
include_nnapi_delegate: Whether to include the NNAPI delegate or not.
"""
tflite_custom_cc_library(name = "%s_cc" % name, models = models, srcs = srcs, deps = deps, visibility = visibility)
delegate_deps = []
if include_nnapi_delegate:
delegate_deps.append("//tensorflow/lite/delegates/nnapi/java/src/main/native")
if include_xnnpack_delegate:
delegate_deps.append("//tensorflow/lite/delegates/xnnpack:xnnpack_delegate")
# JNI wrapper expects a binary file called `libtensorflowlite_jni.so` in java path.
tflite_jni_binary(
name = "libtensorflowlite_jni.so",
@ -882,7 +892,7 @@ def tflite_custom_android_library(
deps = [
"//tensorflow/lite/java/src/main/native:native_framework_only",
":%s_cc" % name,
],
] + delegate_deps,
)
native.cc_library(
@ -893,10 +903,10 @@ def tflite_custom_android_library(
android_library(
name = name,
srcs = ["//tensorflow/lite/java:java_srcs"],
manifest = "//tensorflow/lite/java:AndroidManifest.xml",
deps = [
":%s_jni" % name,
"//tensorflow/lite/java:tensorflowlite_java",
"@org_checkerframework_qual",
],
custom_package = custom_package,

View File

@ -23,10 +23,13 @@ exports_files([
"tflite_version_script.lds",
])
JAVA_SRCS = glob([
"src/main/java/org/tensorflow/lite/*.java",
"src/main/java/org/tensorflow/lite/annotations/*.java",
]) + ["//tensorflow/lite/delegates/nnapi/java/src/main/java/org/tensorflow/lite/nnapi:nnapi_delegate_src"]
filegroup(
name = "java_srcs",
srcs = glob([
"src/main/java/org/tensorflow/lite/*.java",
"src/main/java/org/tensorflow/lite/annotations/*.java",
]) + ["//tensorflow/lite/delegates/nnapi/java/src/main/java/org/tensorflow/lite/nnapi:nnapi_delegate_src"],
)
# Building tensorflow-lite.aar including 4 variants of .so
# To build an aar for release, run below command:
@ -66,7 +69,7 @@ aar_with_jni(
android_library(
name = "tensorflowlite",
srcs = JAVA_SRCS,
srcs = [":java_srcs"],
manifest = "AndroidManifest.xml",
proguard_specs = ["proguard.flags"],
deps = [
@ -111,7 +114,7 @@ android_library(
android_library(
name = "tensorflowlite_java",
srcs = JAVA_SRCS,
srcs = [":java_srcs"],
proguard_specs = ["proguard.flags"],
deps = [
"@org_checkerframework_qual",
@ -120,7 +123,7 @@ android_library(
java_library(
name = "tensorflowlite_javalib",
srcs = JAVA_SRCS,
srcs = [":java_srcs"],
javacopts = JAVACOPTS,
deps = [
"@org_checkerframework_qual",
@ -129,7 +132,7 @@ java_library(
java_library(
name = "tensorflowlitelib",
srcs = JAVA_SRCS,
srcs = [":java_srcs"],
javacopts = JAVACOPTS,
deps = [
":libtensorflowlite_jni.so",
@ -180,7 +183,7 @@ java_test(
java_test(
name = "TensorFlowLiteNoNativeLibTest",
size = "small",
srcs = JAVA_SRCS + ["src/test/java/org/tensorflow/lite/TensorFlowLiteNoNativeLibTest.java"],
srcs = [":java_srcs"] + ["src/test/java/org/tensorflow/lite/TensorFlowLiteNoNativeLibTest.java"],
javacopts = JAVACOPTS,
test_class = "org.tensorflow.lite.TensorFlowLiteNoNativeLibTest",
visibility = ["//visibility:private"],
@ -194,7 +197,7 @@ java_test(
java_test(
name = "TensorFlowLiteInvalidNativeLibTest",
size = "small",
srcs = JAVA_SRCS + ["src/test/java/org/tensorflow/lite/TensorFlowLiteInvalidNativeLibTest.java"],
srcs = [":java_srcs"] + ["src/test/java/org/tensorflow/lite/TensorFlowLiteInvalidNativeLibTest.java"],
javacopts = JAVACOPTS,
test_class = "org.tensorflow.lite.TensorFlowLiteInvalidNativeLibTest",
visibility = ["//visibility:private"],