Mac 14 安装 Flutter 3.4、3.10 以及编译 问题集以及解决方式
前言
前两天准备一台新的Mac 设备,安装Flutter 开发环境,并且在上面编译两个APP,一个基于Flutter 3.4 一个时基于3.10。中途遇到各种问题,总体汇聚整理一下,大家均可参考。
环境或开发工具 | 版本 |
---|---|
Mac | Sonoma 14.2.1 |
XCode | 15.2 |
Flutter | 两个版本: 3.4 和 3.10.6 |
AndroidStudio | Android Studio Hedgehog |
安装
安装包信息
环境或开发工具 | 说明 | 其他 |
---|---|---|
XCode | APP Store 下载最新安装 | |
Android | Google.cn 官网下载安装 | 安装好后启动,仍然需要更新安卓包文件,访问受限,该问题自行网上找答案 |
Flutter | 两个版本: 3.4 和 3.10.6 | 下载地址 |
cocoapod | Flutter 通过 pod 安装其他依赖环境 | 切换国内地址源,本次使用效果很好,地址 |
配置
在用户根目录下增加配置环境变量配置文件 .zshrc (不同mac版本不同)
下面是本次配置,PUB_HOSTED_URL 和 FLUTTER_STORAGE_BASE_URL 是配置flutter 依赖包下载通过国内镜像安装。不然运行指令 flutter pub get 能否成功就是一门玄学。
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
# Setting PATH for flutter
#PATH="/Users/David/works/FlatterSDK/flutter/bin:${PATH}"
PATH="/Users/david/works/flutter_sdk/flutter340/bin:${PATH}"
#PATH="/Users/david/works/flutter_sdk/flutter3106/bin:${PATH}"
export PATH
Flutter 编译过程问题
问题集
过程 | 问题 | 解决方式 |
---|---|---|
首次编译 | 首次运行 Flutter 编译指令,会自动通过 pod 安装进一步安装依赖环境,报错 pod 安装失败。原因是无法访问某个 github 上的资源 | 浏览器上测试当时 github 也不能访问,等到github 可以访问的时候,再次编译,问题解决。尝试过一些捷径,就算通过捷径能够通过浏览器访问 github 但是 pod 仍然不上道,最终还是等到自然访问 github 可以的时候才解决 |
Flutter 3.10 编译错误 | The binary was built with the incorrect architecture to run on this machine. If you are on an ARM Apple Silicon Mac, Flutter requires the Rosetta translation environment. Try running: sudo softwareupdate --install-rosetta --agree-to-license | 按提示执行指令 sudo softwareupdate --install-rosetta --agree-to-license 安装。原因可以访问该地址 |
Flutter 3.10.6 文件安全报警 | 安装过程中会遇到几个Flutter 文件安全告警。文件大概为:fundsubset,iproxy, 等 | 参考下述解决方式和截屏 |
Flutter 3.4 debug 报错 | Could not run build/ios/iphoneos/Runner.app, Try launching Xcode and selecting “Product > Run” to fix the problem。此时到XCode debug 运行,可以连接iOS设备并成功运行 | 运行 Flutter run -v 会暴露具体问题,问题仍然是 fundsubset,iproxy 文件安全性报警,但是编译过程中没有暴露错误信息出来。 注意:在解决该问题后,可以直接Flutter debug, 偶尔仍然报改错,再次运行 Flutter run -v 后(没有报任何错误),在运行debug 就又可以了 |
Flutter 3.4 ipa 编译 报错 | 编译报错 Failed to package /Users/david/Documents/works/works/jxc/LinHang. |
Command PhaseScriptExecution failed with a nonzero exit code | 运行 Flutter build ipa -v 会暴露具体问题,问题仍然是 fundsubset,iproxy 文件安全性报警,但是编译过程中没有暴露错误信息出来。 **注意**:这些问题解决后,最后有个签名错误,目前暂时没有解决他,直接切换到XCode 里面去Archive 提交APP包 |
Flutter 文件安全性问题处理
编译过程中好几个Flutter安全问题,如下图问题
解决方式:
-
在隐私与安全性中可以看到 “已组织使用‘iproxy’,…”, 点击仍然允许
-
再次允许编译,仍然会弹出安全告警如下图。此时就有了 “打开”选项,点击“打开”,再次编译该文件不搞告警
-
网上指令模式去除也测试过,貌似不行,也有可能命令输入有误
小结
- 由于部分资源无法访问,以及不确定的访问,比较痛苦。消耗大量的时间查阅和测试网上各种方式。
- Flutter 编译过程中主要是文件安全性问题
- 低版本的Flutter 安全性问题编译过程中没有暴露出来,需要通过 Flutter run -v, Flutter build ipa -v 启用逐步执行日志模式暴露问题。