You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NDK 22+版本构建适配ARM64的TensorFlow Lite?

适配NDK25构建TensorFlow Lite for Android ARM64的解决方案

问题2解答:无需局限于NDK≤21,可使用NDK22+构建TFLite

TensorFlow 2.11支持通过调整构建配置适配NDK22+版本,官方文档的Bazel限制是由于旧版Bazel的兼容性问题,可通过修改Bazel配置或改用CMake构建绕过。推荐使用CMake构建,更贴合Android项目的CMake集成流程。

问题1:正确的构建配置步骤

提供两种可行方案,按需选择:

方案一:修改Bazel配置适配NDK25构建

  1. 环境准备

    • 安装Bazel 5.3.0及以上版本(TF2.11推荐版本,对NDK22+兼容性更好)
    • 确认NDK25的完整路径,例如~/Android/Sdk/ndk/25.2.9519653
  2. 调整TensorFlow源码配置

    • 打开tensorflow/workspace.bzl,找到android_ndk_repository节点,修改参数:
      android_ndk_repository(
          name = "androidndk",
          api_level = 21,  # 或你的目标Android API版本
          ndk_version = "25.2.9519653",
          path = "~/Android/Sdk/ndk/25.2.9519653",
          platforms_root = "~/Android/Sdk/ndk/25.2.9519653/platforms"  # 解决platforms目录找不到问题
      )
      
  3. 运行配置脚本

    ./configure
    

    交互流程中:

    • 询问"Do you wish to build TensorFlow with Android NDK support?"时选Yes
    • 输入NDK的完整绝对路径
    • 指定Android API level为21或更高版本
    • 其余选项按需选择,最后确认配置
  4. 构建ARM64架构的TFLite动态库

    bazel build --config=android_arm64 //tensorflow/lite:libtensorflowlite.so
    

    构建产物路径:bazel-bin/tensorflow/lite/libtensorflowlite.so

方案二:使用CMake直接构建(推荐,无需Bazel)

此方案更适配Android项目的CMake集成流程,兼容性更强:

  1. 获取TF2.11源码

    git clone https://github.com/tensorflow/tensorflow.git
    cd tensorflow
    git checkout v2.11.0
    
  2. 创建构建目录并配置CMake

    mkdir build_android_arm64 && cd build_android_arm64
    

    执行CMake配置(替换NDK路径为你的实际路径):

    cmake .. \
      -DCMAKE_SYSTEM_NAME=Android \
      -DCMAKE_SYSTEM_VERSION=21 \
      -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
      -DCMAKE_ANDROID_NDK=~/Android/Sdk/ndk/25.2.9519653 \
      -DCMAKE_ANDROID_STL_TYPE=c++_shared \
      -DTFLITE_ENABLE_XNNPACK=ON \
      -DTFLITE_BUILD_SHARED_LIB=ON \
      -DCMAKE_BUILD_TYPE=Release
    

    参数说明:

    • TFLITE_BUILD_SHARED_LIB=ON:构建动态库.so
    • TFLITE_ENABLE_XNNPACK=ON:可选,开启XNNPACK硬件加速
    • CMAKE_ANDROID_STL_TYPE=c++_shared:使用C++共享库,需与项目配置一致
  3. 执行构建

    make -j$(nproc) libtensorflowlite
    

    构建产物路径:build_android_arm64/libtensorflowlite.so

集成到Android项目

  1. 将构建好的libtensorflowlite.so复制到Android项目的app/src/main/jniLibs/arm64-v8a/目录
  2. 在项目的CMakeLists.txt中添加链接配置:
    # 导入TFLite动态库
    add_library(tensorflowlite SHARED IMPORTED)
    set_target_properties(tensorflowlite PROPERTIES
        IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/../jniLibs/arm64-v8a/libtensorflowlite.so
    )
    
    # 链接到你的原生库
    target_link_libraries(your-native-lib-name
        tensorflowlite
        android
        log
    )
    

内容的提问来源于stack exchange,提问作者Turgut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 05:15:34