我需要帮助来设置目标并分别为bazel编译Sdk版本。
我希望在this教程之后在手机上运行tensorflow。编辑WORKSPACE for bazel后如下:
android_sdk_repository(
name = "androidsdk",
api_level = 24,
build_tools_version = "24.0.1",
path = "/home/Android/Sdk",
)
android_ndk_repository(
name="androidndk",
path="/home/Android/Sdk/ndk-bundle",
api_level=21)
我在apk安装时手机上出现PARSE ERROR:
adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk
我启用了USB调试和第三方apk安装。这款手机使用的是Android 4.4.4,所以我改变了WORKSPACE配置以匹配它(SDK管理器正确安装的工具和API):
android_sdk_repository(
name = "androidsdk",
api_level = 19,
build_tools_version = "19.1.0",
path = "/home/Android/Sdk",
)
android_ndk_repository(
name="androidndk",
path="/home/Android/Sdk/ndk-bundle",
api_level=21)
建造时:
bazel build //tensorflow/examples/android:tensorflow_demo
我最终遇到的错误很少:
Error at 5 : /tmp/android_resources_tmp7060220119759636814/merged_resources/values-v21/values.xml:5: error: Error retrieving parent for item: No resource found that matches the given name 'android:Theme.Material.Light'.
在this回答之后,我应该为编译API版本构建> 21但同时目标API版本19.可以轻松设置gradle。但是我没有找到任何线索如何为bazel做到这一点。任何建议都表示赞赏!
答案 0 :(得分:1)
如果您想要定位较低的Android API级别,您要编辑的文件实际上是tensorflow / examples / android / AndroidManifest.xml。将WORKSPACE文件设置保留在您通过sdk安装的最高API级别(API可以使用$ ANDROID_HOME / tools / android安装。)
您可以在AndroidManifest.xml中将最低API级别降低到19,但请注意,除非您更换与camera2 api(已添加API级别)的演示代码,否则您将在运行该演示的手机上遇到运行时错误21)使用类似的android.hardware.camera代码。