expo-popcore-old/.devcontainer/README.md

157 lines
3.8 KiB
Markdown

# Expo EAS Android Dev Container
这个开发容器环境专门为 Expo EAS 本地构建 Android APK 而设计,支持 VS Code 和 JetBrains WebStorm IDE。
## 功能特性
- **Linux Docker 环境**: 基于 Ubuntu 22.04
- **Android SDK**: 预装 Android SDK 34 和构建工具
- **Java 17**: 支持 Android 开发的 Java 环境
- **Node.js 20 LTS**: 最新稳定版本的 Node.js
- **Expo CLI**: 最新版本的 Expo 命令行工具
- **EAS CLI**: 用于本地构建的 EAS 工具
- **IDE 支持**: 同时支持 VS Code 和 WebStorm
## 使用方法
### WebStorm IDE 使用
1. **安装 Docker 插件**
- 打开 WebStorm
- 进入 `File``Settings``Plugins`
- 搜索并安装 `Docker` 插件
2. **配置 Docker 连接**
- 进入 `File``Settings``Build, Execution, Deployment``Docker`
- 点击 `+` 添加 Docker 连接
- 选择 `Docker for Windows``Docker for Mac`
3. **启动开发容器**
```bash
# 在项目根目录运行
cd .devcontainer
docker-compose -f docker-compose.webstorm.yml up -d
```
4. **在 WebStorm 中连接到容器**
- 进入 `File``Settings``Build, Execution, Deployment``Docker`
- 右键点击运行的容器,选择 `Create...``Node.js Remote Interpreter`
- 配置远程 Node.js 解释器
5. **配置项目 SDK**
- 进入 `File``Settings``Languages & Frameworks``Node.js and NPM`
- 选择容器中的 Node.js 解释器
- 设置 package.json 为项目配置文件
### VS Code 使用(原有方式)
1. 确保已安装 [Dev Containers 扩展](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
2. 在 VS Code 中打开此项目
3.`F1``Ctrl+Shift+P` 打开命令面板
4. 选择 "Dev Containers: Reopen in Container"
### 本地构建 Android APK
容器启动后,你可以使用以下命令进行本地构建:
```bash
# 安装依赖
npm install
# 预览版本构建
npm run build:android:preview
# 或者直接使用 EAS CLI
eas build --platform android --profile preview --local
```
### 开发服务器
```bash
# 启动 Expo 开发服务器
npm start
# Android 运行
npm run android
```
## WebStorm 特殊配置
### 远程调试配置
1. **配置运行/调试配置**
- 进入 `Run``Edit Configurations...`
- 点击 `+` 添加 `Node.js` 配置
- 设置 JavaScript file 为 `node_modules/.bin/expo`
- 设置 Application parameters 为 `start`
- 选择容器中的 Node.js 解释器
2. **端口映射**
- 确保 Docker 容器端口已正确映射
- 8081: Metro Bundler
- 19000-19002: Expo Dev Server
### 文件同步
WebStorm 会自动同步文件到容器,如遇到同步问题:
1. 检查 Docker 挂载点配置
2. 确保文件权限正确
3. 重启 Docker 服务
## 端口映射
- `8081`: Metro Bundler
- `19000`: Expo Dev Server
- `19001`: Expo Dev Server (HTTPS)
- `19002`: Expo Dev Server (Alternate)
## 环境变量
容器已配置以下环境变量:
- `ANDROID_HOME=/opt/android-sdk`
- `JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64`
- `GRADLE_USER_HOME=/root/.gradle`
- `EXPO_NO_DOTENV=1`
- `EXPO_DEBUG=1`
## 数据持久化
以下目录已挂载为 Docker 卷,确保数据持久化:
- `/root/.gradle`: Gradle 缓存
- `/root/.android`: Android SDK 配置
## 故障排除
### 构建失败
1. 检查 EAS 配置文件 `eas.json`
2. 确保已正确设置 Android SDK 路径
3. 验证 Java 版本是否为 17
### 权限问题
如果遇到权限问题,可能需要:
```bash
sudo chown -R node:node /workspace
```
### 清理缓存
```bash
# 清理 Expo 缓存
expo r -c
# 清理 EAS 缓存
eas build:clean
```
## 注意事项
- 首次构建可能需要较长时间下载依赖
- 建议使用 VPN 访问 Google 服务以加快 Android SDK 下载
- 容器需要 privileged 模式以支持 Android 模拟器(如需要)