# 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 模拟器(如需要)