背景: 为了适配 iOS 14的 一些新特性, Xcode 工具 需要更新 至最新的 Xcode12 , 由于 电脑空闲内存空间不够,清理了大量的Flutter 编译产物.腾出内存空间 安装Xcode12 .
问题: 更新 Xcode 12 后, Xcode 工具 会默认 修改 之前Xcode11 的 一些工程 编译配置,最后导致编程 找不到相关库 的编译路径. (Flutter 项目 遇到的, 纯原生项目 暂时未知)
比如 : 这个常见的 网络库AFNetworking 编译找不到
(这个库 实际上 通过 cocoapods 已经下载安装 成功,也编译成 功了,但是 Flutter 产物 链接 这个库时,找不到路径,手动指定 路径发现不生效, 因为 Flutter 工程 是通过 自己的编译 配置文件 查找路径的)
因为 上面的一些库链接 不成功,所以 Flutter 产物自然生成 不了.
缺少Flutter 编译产物根本原因: (编译配置文件 被 Xcode12 修改了)
错误的 编译配置(如下):
错误的 编译配置正确的 编译配置
正确的 编译配置如果 指定 正确的 编译配置文件 后,还是 编译不成功.
很大原因是 上面的配置文件本身有问题,
因为上面的 编译配置文件是 在 flutter build ios 这个命令 自动生成的
解决办法:
方法一: Flutter 产物 这个文件夹下 所有产物以及 配置文件删除掉. 然后重新执行 Flutter build ios 这个命令生成产物.
方法二: 放弃 上面整个 仓库工程代码,以及相关的编译残留配置.
从新拉取分支代码,然后,按上面正确的工程配置,指定编译文件,从新编译产物.
(这个方法是牛逼中的战斗机,可以解决莫名其妙的一些编译报错)
第二个 "坑"
报错:Showing All Messages
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv64 arm64e x86_64 armv7).
原因: 升级 Xcode 12 后, Flutter 产物依赖的一些第三方 库,的CPU 架构 不对. 会导致模拟器无法运行,(Xcode 11 这些 配置其实之前有的,我这边因为是 直接更新Xcode12,导致部分配置不对)
解决方法:
看图 配置,
1.Build Setting —> 搜索 VALID_ARCHS ,
2. 对应写上 armv64 arm64e x86_64 ,就OJBK 了.
指定CPU 编译架构 armv64 arm64e x86_64吐血总结:
记得千万不要直接 在 APPStore 直接升级 Xcode, 因为这么升级是 直接顶替 掉旧版Xcode 的,这样很容易导致之前的项目编译配置不正常. 被新Xcode 从新组织配置了.
最保险升级Xcode 的方法 应该是
在官方苹果 网站 下载安装包, 然后 再安装 Xcode12 , 这样的话 电脑上 同时保留着 新旧 2个 Xcode , 方便升级过程中 有问题,直接在旧Xcode 处理临时紧急问题.
为什么没这么干呢? 因为电脑内存空间严重不足(高清大片太多),难以同时支撑 2 个Xcode 这么庞大的 家伙.
(说到底,还是人穷志短,没法装逼…)
搞完 成功 !!!
尼玛,真香!!!
特别鸣谢,金兴大佬全程指点迷津!!!
网友评论