为bazel设置targetSdkVersion和compileSdkVersion,android tensorflow

时间:2017-01-05 06:48:30

标签: android tensorflow android-gradle bazel

我需要帮助来设置目标并分别为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做到这一点。任何建议都表示赞赏!

1 个答案:

答案 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代码。