我想在React Native代码中确定应用程序是在Expo Go中运行还是作为独立的iOS/Android应用程序运行。
我不能使用__DEV__
,因为我想能够针对生产版本进行确定。
我想在React Native代码中确定应用程序是在Expo Go中运行还是作为独立的iOS/Android应用程序运行。
我不能使用__DEV__
,因为我想能够针对生产版本进行确定。
您可以使用Expo中的AppOwnership
,它来自于Constants
import Constants from 'expo-constants'
const isRunningInExpoGo = Constants.appOwnership === 'expo'
ExecutionEnvironment.Standalone === "standalone"
文档可以在这里找到
standalone
用于生产构建,storeClient
用于通过Expo Go
客户端进行开发,而bare
用于通过自己的应用程序进行开发(无论是通过弹出还是通过dev-client,因为它基本上是裸设置的“模拟器”)。 - Eduardeas build --platform ios
来构建正式版应用,使用 eas build --profile development-simulator --platform ios
来构建开发版应用。但不幸的是,Constants.executionEnvironment
对于两者都返回 bare
。你有任何想法为什么会发生这种情况吗? - ElDiabolotrue
,因为你将枚举值Standalone = 'standalone'与字符串"standalone"进行比较。 - undefinedbare
作为正确的响应,你可以在这里找到文档:https://docs.expo.dev/bare/overview/ - undefinedappOwnership
和ExecutionEnvironment
混淆,如果你在expo-dev-client上运行,将返回bare
,而如果你直接在Expo Go上运行,则返回storeClient
,当在最终的EAS Build应用程序中运行时,则返回standalone
。 - undefinedExecutionEnvironment
是一个看起来像这样的枚举类型:export enum ExecutionEnvironment {
Bare = 'bare', Standalone = 'standalone', StoreClient = 'storeClient'}
Constants.executionEnvironment === ExecutionEnvironment.Standalone
Constants.executionEnvironment === ExecutionEnvironment.Bare