flutter开发填坑记录2

记录下flutter开发中碰到的问题。

一、 iOS

自从项目添加了flutter模块后,每次打包就成了噩梦,有时半天有时一天都是莫名其妙的错误。碰到最多的还是module 'Flutter' not found

报错flutter找不到

今天又看到了一个新报错

Build service could not create build operation: unknown error while handling message: MsgHandlingError(message: "unable to initiate PIF transfer session (operation in progress?)")
复制代码

实在是解决不完,还是重启吧。(重启能解决99%的问题)

记录下现在的解决流程,有更好的方法,请留言告知。

1. 清理

(1)shift + command + k 清理项目。

(2)删除Derived Data文件夹(清理Xcode的缓存)

Derived data

(3)移除Build Phase关于Pods的配置。

清理pods配置

删除后的配置,就剩下project的源文件、图片资源和第三方库。

删除Pods配置后

(4)删除Pods文件夹,Podfile.lock和workspace。

删除Pods的文件夹

(5)关闭Xcode。

2. 更新pub

(1)清空

到flutter的目录下,执行flutter clean

此操作会删除目录下的.ios.android.flutter*等文件。

(2)重建

执行flutter pub get重建flutter module。

3. 安装Xcode依赖

到项目文件夹中执行pod install,执行会将刚刚清除的Pods文件夹重新安装。

如果报错,可以看看Flutter3.3打包iOS填坑记录 - 掘金 (juejin.cn)需要修改下podhelper.rb。

4. 编译项目

一切都已经清理并重装完成了。打开workspace,等待index的检索完成。开始build

Maybe 还是会看到 module 'Flutter' not found. 心灰意冷。

(1)此时到Podfile文件中,将install_all_flutter_pods(flutter_application_path)注释,然后执行pod install再次清理flutter相关的依赖。

(2)再次pod install安装依赖。

(3)等index结束后,build项目。

(4)如果还是报错,那么重复(1)直到成功为止。。

此方案方法是最笨的方法,有好办法,请给我留言。

二、Android

Android Studio升级到最新版本Android Studio Flamingo | 2022.2.1后,推荐Gradle升级到8.0. 碰到报错

Caused by: org.gradle.api.GradleException: 'compileDebugJavaWithJavac' task (current target is 1.8) and 'compileDebugKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version.
复制代码

因为第三方库"mobile_scanner"使用的java 1.8,而AS默认已经是Java 17了。作为妥协,目前的解决办法为

classpath 'com.android.tools.build:gradle:8.0.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.22"
复制代码

Gradle plugin从之前的1.8.20版本回退到1.7.22来解决这个问题。

已经给"mobile_scanner"留言,升级一下,与时俱进。

AGP的升级是放弃了,再等等吧。 实在是解决不完错误啊。

Tips

  1. CocoaPods 升级到 1.12.1解决iOS的一个编译问题building file list ... rsync。
  2. mobile_scanner 在iOS的扫码效率还是用iOS原生高。添加一个AVCaptureMetadataOutputObjectsDelegate来返回内容。

猜你喜欢

转载自juejin.im/post/7225524569506283581