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

React Native Android端ML Kit姿态检测报错:函数未找到

问题诊断与解决方案

运行时提示__poseDetection函数不存在,本质是JS层无法正确找到原生模块暴露的方法,以下是针对性排查与修复步骤:

1. 检查原生模块的方法注册(Java/Kotlin)

React Native原生模块必须通过@ReactMethod注解暴露方法,且方法名需与JS调用完全一致:

  • 正确示例(Java):
public class PoseDetectionModule extends ReactContextBaseJavaModule {
  // 模块名称需与JS层导入的名称一致
  @Override
  public String getName() {
    return "PoseDetectionModule";
  }

  // 暴露给JS的方法,名称必须匹配JS调用的poseDetection
  @ReactMethod
  public void poseDetection(Promise promise) {
    // 姿态检测逻辑实现
  }
}
  • 注意:方法必须为public,参数需符合RN桥接规则(支持Promise、Callback等)。

2. 确认Package类正确注册模块

PoseDetectionPackage需在createNativeModules中返回模块实例,同时在MainApplication中注册Package:

  • PoseDetectionPackage.java:
public class PoseDetectionPackage implements ReactPackage {
  @Override
  public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
    List<NativeModule> modules = new ArrayList<>();
    modules.add(new PoseDetectionModule(reactContext)); // 必须添加此行
    return modules;
  }

  @Override
  public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
    return Collections.emptyList();
  }
}
  • MainApplication.java:
@Override
protected List<ReactPackage> getPackages() {
  List<ReactPackage> packages = new PackageList(this).getPackages();
  packages.add(new PoseDetectionPackage()); // 注册自定义Package
  return packages;
}

3. JS层调用方式匹配

确保JS导入与调用的方法名、模块名与原生完全一致(TypeScript示例):

import { NativeModules } from 'react-native';
const { PoseDetectionModule } = NativeModules; // 模块名对应原生getName()返回值

// 调用原生暴露的poseDetection方法
PoseDetectionModule.poseDetection()
  .then(result => console.log(result))
  .catch(error => console.error(error));

4. 清理缓存与重建项目

编译成功但运行时出错,大概率是缓存问题:

  • 清理RN缓存:npx react-native start --reset-cache
  • 清理Android构建缓存:Android Studio中执行Build -> Clean Project + Build -> Rebuild Project
  • 卸载设备旧应用后重新安装:npx react-native run-android

5. 检查Gradle配置正确性

确保app/build.gradle中添加ML Kit依赖,且最低SDK版本符合要求:

android {
  defaultConfig {
    minSdkVersion 21 // ML Kit要求最低21
  }
}

dependencies {
  // ML Kit姿态检测核心依赖
  implementation 'com.google.mlkit:pose-detection:17.0.1'
  // 如需高精度模型可添加
  implementation 'com.google.mlkit:pose-detection-accurate:17.0.1'
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:53:21