expo-popcore-old/.devcontainer
imeepos 0cbb74e03a Initial commit: expo-popcore project 2025-12-25 16:31:17 +08:00
..
Dockerfile Initial commit: expo-popcore project 2025-12-25 16:31:17 +08:00
README.md Initial commit: expo-popcore project 2025-12-25 16:31:17 +08:00
devcontainer.json Initial commit: expo-popcore project 2025-12-25 16:31:17 +08:00
docker-compose.webstorm.yml Initial commit: expo-popcore project 2025-12-25 16:31:17 +08:00
docker-compose.yml Initial commit: expo-popcore project 2025-12-25 16:31:17 +08:00
webstorm-setup.md Initial commit: expo-popcore project 2025-12-25 16:31:17 +08:00

README.md

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
    • 进入 FileSettingsPlugins
    • 搜索并安装 Docker 插件
  2. 配置 Docker 连接

    • 进入 FileSettingsBuild, Execution, DeploymentDocker
    • 点击 + 添加 Docker 连接
    • 选择 Docker for WindowsDocker for Mac
  3. 启动开发容器

    # 在项目根目录运行
    cd .devcontainer
    docker-compose -f docker-compose.webstorm.yml up -d
    
  4. 在 WebStorm 中连接到容器

    • 进入 FileSettingsBuild, Execution, DeploymentDocker
    • 右键点击运行的容器,选择 Create...Node.js Remote Interpreter
    • 配置远程 Node.js 解释器
  5. 配置项目 SDK

    • 进入 FileSettingsLanguages & FrameworksNode.js and NPM
    • 选择容器中的 Node.js 解释器
    • 设置 package.json 为项目配置文件

VS Code 使用(原有方式)

  1. 确保已安装 Dev Containers 扩展
  2. 在 VS Code 中打开此项目
  3. F1Ctrl+Shift+P 打开命令面板
  4. 选择 "Dev Containers: Reopen in Container"

本地构建 Android APK

容器启动后,你可以使用以下命令进行本地构建:

# 安装依赖
npm install

# 预览版本构建
npm run build:android:preview

# 或者直接使用 EAS CLI
eas build --platform android --profile preview --local

开发服务器

# 启动 Expo 开发服务器
npm start

# Android 运行
npm run android

WebStorm 特殊配置

远程调试配置

  1. 配置运行/调试配置

    • 进入 RunEdit 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

权限问题

如果遇到权限问题,可能需要:

sudo chown -R node:node /workspace

清理缓存

# 清理 Expo 缓存
expo r -c

# 清理 EAS 缓存
eas build:clean

注意事项

  • 首次构建可能需要较长时间下载依赖
  • 建议使用 VPN 访问 Google 服务以加快 Android SDK 下载
  • 容器需要 privileged 模式以支持 Android 模拟器(如需要)