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

使用Expo-auth-session在Android构建时遇ExpoCrypto枚举转换异常

问题解决:Expo Android端Google登录报错(ExpoCrypto枚举转换问题)

问题描述

在Expo构建的Android React Native应用中,添加Google.useAuthRequest代码段后触发以下错误,移除该代码段应用可正常运行:

Exception in HostObject::get for prop 'ExpoCrypto': java.lang.IllegalArgumentException: Cannot convert js value to enum without the primary constructor, js engine: hermes

可行解决方法

  • 确保安装expo-crypto依赖:
    执行命令:

    npx expo install expo-crypto
    

    虽然expo-auth-session默认依赖该包,但手动重新安装可修复版本不匹配问题。

  • 清除Expo缓存并重新构建:

    npx expo start --clear
    

    缓存损坏可能导致依赖加载异常,清除后重新启动项目。

  • 对齐Expo相关包版本:
    检查package.json中expo、expo-auth-session、expo-crypto的版本,确保它们属于同一Expo SDK版本(例如都对应SDK 49/50)。如果版本差异过大,升级/降级到兼容版本。

  • 临时禁用Hermes引擎(仅作排查用):
    在app.json中修改配置:

    {
      "expo": {
        "android": {
          "jsEngine": "jsc"
        }
      }
    }
    

    若禁用后问题消失,说明Hermes与当前依赖包存在兼容问题,可等待后续版本修复或继续使用JSC。

代码验证提示

确保你的Google登录配置正确填充了各平台Client ID,示例代码中的空值需替换为实际获取的ID:

const [request, response, promptAsync] = Google.useAuthRequest({
  androidClientId: "你的Android客户端ID",
  iosClientId: "你的iOS客户端ID",
  expoClientId: "你的Expo客户端ID",
})

内容的提问来源于stack exchange,提问作者Sven Andreas Clausz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:37:34