0%

Expo

objectives orientation:

  • what & what benefits, defect(缺点)
  • 交互interact
  • 隐私和权限
  • 工具链

what is Expo

Expo 是一个基于 React Native 的框架。其服务于简化和便于 React Native 开发方式,Expo框架包括Expo CLI(如 create-expo-app)Expo SDK (其封装了一些导航、设备、通知等功能和api)Expo Go(一个可以在 iOS 和 Android 上安装的应用程序,允许你通过扫描 QR 码或 URL 来即时预览和测试你的 Expo 项目,而不需要构建 APK 或 IPA 文件。)EAS (远程构建 一键推送Google Play和Apple Store)
参考使用Expo开发应用

缺点是对深度定制开发(甚至无法对接支付宝和微信支付功能)和涉及到原生模块的开发缺乏灵活性,需要Expo eject成纯React Native项目,此操作不可逆

安装Expo:

1
2
3
4
5
npx create-expo-app StickerSmash --template blank-typescript
cd StickerSmash

npx expo run:android
npx expo start

使用npx expo install而不是npm i或yarn add,以便提供兼容性提示

Expo路由

file-based router

配置

app.json 存放编译所需静态参数 如app名称、版本信息、OTA配置等
如需动态配置应使用app.config.ts

1
2
3
4
5
6
7
8
import { ExpoConfig, ConfigContext } from 'expo/config';

export default ({ config }: ConfigContext): ExpoConfig => ({
...config,
slug: 'my-app',
name: 'My App',
});

Expo SDK库

EAS

Expo Application Service, 构建安装包需要用eas服务,这是对墙内用户不友好的地方之一

1
2
3
npm i -g eas-cli
eas login
eas build --platform android --profile release

默认打包成abb文件,生成apk需要在eas.json中某个profile中设置好类型如
1
2
3
4
5
"release": {
"android": {
"buildType": "apk"
}
}