Skip to content

Latest commit

 

History

History
335 lines (241 loc) · 6.76 KB

File metadata and controls

335 lines (241 loc) · 6.76 KB

安装指南

本文档详细介绍 CalcLab 的安装、平台配置、依赖管理与常见问题排查。


目录


1. 系统要求

项目 最低版本 推荐版本
Flutter SDK 3.12.0 3.16+
Dart SDK 3.12.0 3.2+
Android SDK API 21 (Android 5.0) API 34 (Android 14)
Java JDK 17 17 / 21
Gradle 8.0 8.5+
Xcode(iOS) 14.0 15.0+
CocoaPods(iOS) 1.11 1.14+
磁盘空间 5 GB 10 GB
RAM 8 GB 16 GB

操作系统支持

  • ✅ Windows 10 / 11(64-bit)
  • ✅ macOS 12 Monterey 或更高
  • ✅ Ubuntu 20.04+ / Debian 11+

2. Flutter SDK 安装

2.1 Windows

  1. 下载 Flutter SDK 压缩包:

    # 推荐下载稳定版
    # 访问 https://docs.flutter.dev/get-started/install/windows
  2. 解压到无空格、无中文路径,例如 C:\flutter

  3. 配置环境变量:

    • 系统属性 → 高级 → 环境变量
    • Path 中添加 C:\flutter\bin
  4. 验证安装:

    flutter --version
    flutter doctor

2.2 macOS

# 使用 Homebrew(推荐)
brew install flutter

# 或下载压缩包解压到 ~/development/flutter
# 然后将 $HOME/development/flutter/bin 加入 PATH

2.3 Linux

# 1. 下载最新稳定版
wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.16.0-stable.tar.xz

# 2. 解压
tar xf flutter_linux_3.16.0-stable.tar.xz

# 3. 加入 PATH
echo 'export PATH="$HOME/flutter/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

# 4. 验证
flutter --version

3. 项目克隆与初始化

# 1. 克隆仓库
git clone https://github.com/soodddd/CalcLab.git
cd CalcLab

# 2. 拉取依赖
flutter pub get

# 3. 检查环境
flutter doctor -v

flutter doctor 应显示所有平台就绪(绿色 ✓)。如有红色 ✗,请按提示安装对应组件。


4. 平台配置

4.1 Android

安装 Android Studio

  1. 下载并安装 Android Studio
  2. 打开 SDK Manager,安装:
    • Android SDK Platform 34
    • Android SDK Build-Tools 34.0.0
    • Android SDK Platform-Tools
    • Android Emulator(可选)

配置 ANDROID_HOME

# Windows
[System.Environment]::SetEnvironmentVariable("ANDROID_HOME", "C:\Users\<你>\AppData\Local\Android\Sdk", "User")
# macOS / Linux
echo 'export ANDROID_HOME="$HOME/Library/Android/sdk"' >> ~/.zshrc  # macOS
echo 'export ANDROID_HOME="$HOME/Android/Sdk"' >> ~/.bashrc          # Linux

创建 Android 模拟器

  1. 打开 Android Studio → Device Manager
  2. Create Device → 选择 Pixel 6 / API 34
  3. 启动模拟器

启动应用

flutter run                # 自动选择已连接设备
flutter run -d <deviceId>  # 指定设备

4.2 iOS(macOS only)

# 1. 安装 CocoaPods
sudo gem install cocoapods

# 2. 安装 Xcode 命令行工具
xcode-select --install

# 3. 进入 iOS 目录并初始化
cd ios
pod install
cd ..

# 4. 启动 iOS 模拟器
open -a Simulator

# 5. 运行
flutter run

5. 运行与调试

常用命令

# 列出已连接设备
flutter devices

# 运行(开发模式,支持热重载)
flutter run

# 指定端口运行
flutter run -d <deviceId> --release

# 仅构建不运行
flutter build apk --debug

# 清理构建缓存
flutter clean

调试技巧

  • 热重载r(保留状态)或 R(重启)
  • 查看 widget 树w
  • 切换调试面板p
  • 退出q

IDE 推荐

  • VS Code:安装 Flutter + Dart 扩展
  • Android Studio:内置 Flutter 插件
  • IntelliJ IDEA:Ultimate + Flutter 插件

6. 构建发布包

6.1 Android APK

# Debug APK(开发测试用)
flutter build apk --debug
# 输出:build/app/outputs/flutter-apk/app-debug.apk

# Release APK(发布)
flutter build apk --release
# 输出:build/app/outputs/flutter-apk/app-release.apk

# 分架构构建(推荐,包体更小)
flutter build apk --release --split-per-abi

6.2 Android App Bundle(AAB)

flutter build appbundle --release
# 输出:build/app/outputs/bundle/release/app-release.aab

6.3 iOS

# 仅构建(不上传)
flutter build ios --release --no-codesign

# 上传到 App Store
flutter build ipa

6.4 Web(实验性)

flutter build web --release
# 输出:build/web/

⚠️ Web 端 LaTeX 渲染、相机权限等功能可能受限。


7. 常见问题

Q1: flutter doctor 显示 Android licenses 未接受

flutter doctor --android-licenses
# 一路输入 y 接受所有许可

Q2: Gradle 构建失败 / 内存不足

编辑 android/gradle.properties

org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G
android.useAndroidX=true

Q3: 依赖版本冲突

# 删除锁定文件重新解析
rm pubspec.lock
flutter pub get

# 或使用升级命令
flutter pub upgrade

Q4: 模拟器启动后 flutter run 找不到设备

# 列出所有 adb 设备
adb devices

# 重启 adb
adb kill-server
adb start-server

# 重启模拟器
flutter emulators --launch <emulator_id>

Q5: iOS Pod install 失败

cd ios
pod deintegrate
pod cache clean --all
pod install --repo-update
cd ..

Q6: APK 体积过大(> 100MB)

  • 使用 --split-per-abi 分架构构建
  • 启用 R8 / ProGuard 压缩(编辑 android/app/build.gradle.kts
  • 移除未使用的图片资源
  • 使用 --shrink 标志

Q7: 公式识别 / 相机权限失败

Android:在 android/app/src/main/AndroidManifest.xml 添加:

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.INTERNET"/>

iOS:在 ios/Runner/Info.plist 添加:

<key>NSCameraUsageDescription</key>
<string>用于拍照识别公式</string>

Q8: 分享码无法跨设备同步

分享码使用 UTF-8 JSON → base64 编码,纯本地实现,不依赖服务器。如跨设备无法识别:

  • 检查是否复制完整(CALCLAB: 前缀)
  • 检查目标设备 Dart 版本 ≥ 3.0

8. 下一步