使用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
相关产品推荐
相关产品推荐

