157 lines
3.8 KiB
Markdown
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 模拟器(如需要)
|