使用expo export打包时,一定要保证每个人expo-cli脚手架的版本一致。
我们热更新服务是在docker环境下打的,每次构建node镜像时都会使用npm install -g expo重新安装expo-cli,某一天突然jenkins打的包出问题了,查了三天才发现镜像在重装expo-cli时升级了,没有用之前的版本,解决办法也简单,让运维安装指定版本即可。
本文主要介绍expo SDK中都有哪些API,避免因为不清楚,而自己重复造轮子。至于API的使用细节,建议查看官方文档
expo SDK内有很多国内不适用的API,下面的表格就不做覆盖了
Bare app指由expo app执行expo eject后的app,此时我标记✅是指需要特殊配置(查看文档)后才能使用,标记查❌是指直接不支持Bare app,至于是否支持非expo app,查看对应文档
API | iOS | iOS模拟器 | Android | Android模拟器 | Bare app | 备注 |
---|---|---|---|---|---|---|
VR | - | - | - | - | expo SDK 38开始,已废弃 | |
加速度器 | ✅ | ❌ | ✅ | ✅ | ✅ | |
AppAuth | ✅ | ✅ | ✅ | ✅ | ✅ | 目前看到的仅仅支持web类的第三方登录 |
AppLoading | ✅ | ✅ | ✅ | ✅ | ❌ | 搭配Splash使用,优化启动体验 |
Appearance | ✅ | ✅ | ✅ | ✅ | ✅ | 配置黑暗模式 |
AppleAuthentication | ✅ | ✅ | ❌ | ❌ | ✅ | 苹果登录 |
Application | ✅ | ✅ | ✅ | ✅ | ✅ | 获取应用的一些版本信息 |
ART | - | - | - | - | - | expo SDK 36已废弃 |
Asset | ✅ | ✅ | ✅ | ✅ | ✅ | 管理asset资产 |
AsyncStorage | ✅ | ✅ | ✅ | ✅ | ✅ | |
AuthSession | ✅ | ✅ | ✅ | ✅ | ✅ | 一种基于浏览器的身份认证,不太明白跟AppAuth有啥关系 |
Audio(音频) | ✅ | ✅ | ✅ | ✅ | ✅ | 不仅可以播放还可以录制哎 |
AV | ✅ | ✅ | ✅ | ✅ | ✅ | 多数需要对视频播放状态进行更好控制的应用程序,我们建议使用此命令性播放API |
Video | ✅ | ✅ | ✅ | ✅ | ✅ | 好尴尬呀,这就搞不明白AV是干嘛的了 |
BackgroundFetch | ✅ | ✅ | ✅ | ✅ | ✅ | 后台执行代码 |
BarCodeScanner | ✅ | ✅ | ✅ | ✅ | ✅ | |
Barometer | ✅ | ❌ | ✅ | ✅ | ✅ | 气压计传感器 |
battery | ✅ | ❌ | ✅ | ✅ | ✅ | 电池信息 |
blur | ✅ | ✅ | ✅ | ✅ | ✅ | 毛玻璃 |
Brightness | ✅ | ✅ | ✅ | ✅ | ✅ | 亮度调整 |
Calendar | ✅ | ✅ | ✅ | ✅ | ✅ | 日历 |
Camera | ✅ | ❌ | ✅ | ❌ | 相机 | |
captureRef | ✅ | ✅ | ✅ | ✅ | ✅ | 生成快照 |
cellular | ❌ | ✅ | ✅ | ✅ | ✅ | 蜂窝电话 |
constants | ✅ | ✅ | ✅ | ✅ | ✅ | 始终不变的系统信息 |
contacts | ✅ | ✅ | ✅ | ✅ | ✅ | 通讯录 |
crypto | ✅ | ✅ | ✅ | ✅ | ✅ | 加密 |
DateTimePicker | ✅ | ✅ | ✅ | ✅ | ✅ | 日期选择 |
device | ✅ | ✅ | ✅ | ✅ | ✅ | 物理设备的系统信息,eg:制造商/型号 |
DeviceMotion | ✅ | ✅ | ✅ | ✅ | ✅ | 方向传感器 |
DocumentPicker | ✅ | ✅ | ✅ | ✅ | ✅ | 从系统中选择文档 |
ErrorRecovery | ✅ | ✅ | ✅ | ✅ | ✅ | 处理js的crash |
FaceDetector | ✅ | ❌ | ✅ | ❌ | ✅ | 脸部探测器 |
FileSystem | ✅ | ✅ | ✅ | ✅ | ✅ | 将文件下载到本地 |
Font | ✅ | ✅ | ✅ | ✅ | ✅ | 从asset中加载字体,并且还支持网络字体哦 |
GestureHandler | ✅ | ✅ | ✅ | ✅ | ✅ | 复杂手势处理,而且手势操作是在Native线程运行 |
GLView | ✅ | ✅ | ✅ | ✅ | ✅ | 渲染2D/3D图形 |
Gyroscope | ✅ | ❌ | ✅ | ✅ | ✅ | 陀螺仪传感器 |
haptics | ✅ | ✅ | ✅ | ✅ | ✅ | 触觉反馈 |
ImageManipulator | ✅ | ✅ | ✅ | ✅ | ✅ | 修改存储在本地文件系统上的图像 |
ImagePicker | ✅ | ✅ | ✅ | ✅ | ✅ | 图片选择器 |
InAppPurchases | ✅ | ❌ | ✅ | ❌ | ✅ | 仅仅在bare workflow中可用 |
IntentLauncher | ✅ | ✅ | ✅ | ✅ | ✅ | 提供了一种启动Android Intent的方法。例如,您可以使用此API打开特定的设置屏幕(没看明白) |
KeepAwake | ✅ | ✅ | ✅ | ✅ | ✅ | 防止屏幕休眠 |
LinearGradient | ✅ | ✅ | ✅ | ✅ | ✅ | 渐变色 |
Linking | ✅ | ✅ | ✅ | ✅ | ❌ | 对非expo app中Link的扩展,主要用于通过连接来进行两者的通信 |
LocalAuthentication | ✅ | ✅ | ✅ | ✅ | ✅ | 通过生物特征提示进行身份验证 |
Localization | ✅ | ✅ | ✅ | ✅ | ✅ | 国际化 |
Location | ✅ | ✅ | ✅ | ✅ | ✅ | 获取为止信息,可以轮询哦 |
Lottie | ✅ | ✅ | ✅ | ✅ | ✅ | 通过json实现动画的库 |
Magnetometer | ✅ | ✅ | ✅ | ✅ | ✅ | 磁力计传感器 |
MailComposer | ✅ | ❌ | ✅ | ✅ | ✅ | 使用OS UI发送邮件 |
MapView | ✅ | ✅ | ✅ | ✅ | ✅ | |
MaskedView | ✅ | ✅ | ✅ | ✅ | ✅ | 提供一个蒙版视图,该蒙版视图仅显示与其蒙版元素中呈现的视图重叠的像素。 |
MediaLibrary | ✅ | ✅ | ✅ | ✅ | ✅ | 提供对用户媒体库的访问权限,使他们可以从您的应用访问他们现有的图像和视频,以及保存新的图像和视频。您还可以订阅对用户媒体库进行的任何更新 |
netinfo | ✅ | ✅ | ✅ | ✅ | ✅ | 获得有关网络连接类型和连接质量的信息 |
Network | ✅ | ✅ | ✅ | ✅ | ✅ | 提供有关设备网络的有用信息,例如其IP地址,MAC地址和飞行模式状态 |
Notifications | ✅ | ✅ | ✅ | ✅ | ✅ | 通知 |
Payments | ✅ | ✅ | ✅ | ❌ | ✅ | iOS上通过Stripe和Apple Pay进行支付,以及在Android上通过Stripe进行支付以及通过ExpoKit进行Android Pay) |
Pedometer | ✅ | ✅ | ✅ | ✅ | ✅ | 计步器 |
Permissions | ✅ | ✅ | ✅ | ✅ | ✅ | 权限 |
Picker | ✅ | ✅ | ✅ | ✅ | ✅ | 提供访问系统UI以便在多个选项之间进行选择的组件。 |
✅ | ✅ | ✅ | ✅ | ✅ | iOS(AirPrint)和Android打印功能 | |
random | ✅ | ✅ | ✅ | ✅ | ✅ | 提供用于创建强随机字节的本机接口 |
Reanimated | ✅ | ✅ | ✅ | ✅ | ✅ | 提供的API可大大简化创建流畅,强大和可维护的动画的过程 |
registerRootComponent | ✅ | ✅ | ✅ | ✅ | ❌ | 告诉Expo将哪个组件用作您的应用程序的根组件 |
SafeAreaContext | ✅ | ✅ | ✅ | ✅ | ✅ | 更灵活的访问安全区域的API,可以在安全区域插入内容哦 |
ScreenCapture | ✅ | ✅ | ✅ | ✅ | ✅ | 许您保护应用程序中的屏幕不被捕获或记录 |
ScreenOrientation | ✅ | ✅ | ✅ | ✅ | ✅ | 为在设备上绘制图形的方向 |
SecureStore | ✅ | ✅ | ✅ | ✅ | ✅ | 提供了一种在设备上本地加密和安全存储键-值对的方法 |
SegmentedControl | 分段按钮 | |||||
Sensors | ✅ | ✅ | ✅ | ✅ | ✅ | 访问设备传感器以测量运动,方向,压力,磁场和步数 |
Sharing | ✅ | ✅ | ✅ | ✅ | ✅ | 原生自带的分享 |
Slider | ✅ | ✅ | ✅ | ✅ | ✅ | 滑块 |
SMS | ✅ | ✅ | ✅ | ✅ | ✅ | 使用系统 UI/app发送短信 |
speech | ✅ | ✅ | ✅ | ✅ | ✅ | 文字转语音 |
SplashScreen | ✅ | ✅ | ✅ | ✅ | ✅ | 启动图 |
SQLite | ✅ | ✅ | ✅ | ✅ | ✅ | 数据库 |
StatusBar | ✅ | ✅ | ✅ | ✅ | ✅ | 控制应用程序状态栏 |
StoreReview | ✅ | ✅ | ✅ | ✅ | ✅ | 应用程序评分 |
Svg | ✅ | ✅ | ✅ | ✅ | ✅ | 允许您在应用中使用SVG,并支持交互性和动画 |
TaskManager | ✅ | ✅ | ✅ | ✅ | ✅ | 管理长期运行的任务 |
Updates | ✅ | ✅ | ✅ | ✅ | ✅ | |
VideoThumbnails | ✅ | ✅ | ✅ | ✅ | ✅ | 从视频文件生成图像以用作缩略图 |
ViewPager | ✅ | ✅ | ✅ | ✅ | ✅ | 该组件提供布局和手势以在内容页面之间滚动,例如轮播。 |
WebBrowser | ✅ | ✅ | ✅ | ✅ | ✅ | 系统WebView,用于身份验证需要使用特殊的API |
WebView | ✅ | ✅ | ✅ | ✅ | ✅ | 内置WebView |