flutter项目苹果编译运行打包上线

背景介绍

首先flutter项目里面又个ios文件夹就相当于那个android文件夹一个道理,外面是flutter的dart代码里面就是各自的原生代码,至于是怎么转译过去的我猜就是每次运行的时候编译过去了。

然后就是苹果app是.ipa结尾的,苹果的app只能用苹果电脑打包发版,并且要求很多,其实可以直接用xcode直接运行,但是前辈姐说在as先运行,一开始真的我搞不明白as和xcode都扮演着什么角色,后来这那的就是不断撞南墙才知道原来as就是和在windowds电脑上没什么区别,xcode是苹果自带的就是专门用来开发苹果生态软件的东西,是可以直接在里面运行的,但是我是真的没找到控制台在哪,所以还是先用as运行然后看报错,已经试过了两边报错一样。

准备条件

首先一个完整的过程首先就是运行编译成功,用as还有个原因大概是可以先不用管证书那一套,应该是吧虽然现在还没运行出来,然后之后其实很简单就是按照xcode上一步步点就行。在此之前需要准备好苹果的相关文件。首先得有个账号,然后在你的账号里还有team,这个team也用得到,然后就是他申请的那些东西,首先最好先申请appid,这个东西一个app一个,不管以后更不更新都只是这一个,然后设备,这个就是如果你想运行到某个手机上你就得把你手机加上去,最后搞证书和描述文件,这一步就需要到苹果电脑的钥匙串,应该是一个电脑就一个,反正需要的时候穿上去就行,分为两种开发和发行,还没搞明白具体怎么用,但是as里面又个auto什么可以自动识别,识别不了也可以下到本地自己选,据前辈姐说如果证书不过期就可以不用再重新生成啥的,如果过期也不会影响已经发版的app

基础知识吧

完全不懂到不断看报错才能稍微懂点的关于苹果生态的一些基础词。

对于android来说可以直接在flutter项目运行,运行之前pubget,苹果的话这些我也先执行了,在之后进入ios项目很多说要运行 pod install,但是我观察发现在flutter项目运行 flutter build ios --release的时候也会运行pod install不知道是不是一个步骤还是都运行好了,记得flutter clean。

pod应该就是CocoaPods 是一个用于Swift和Objective-C Cocoa项目的依赖管理工具。它简化了在iOS和macOS项目中添加、更新和管理第三方库的过程

然后这里就有一个文件是podfile,这个就相当于pubspec.yaml,是两种不同编程语言生态系统中用于管理项目依赖的文件。

ios项目列表:

Flutter.podspec 和 Podfile.lock 是在 iOS 开发中使用 CocoaPods 作为依赖管理工具时涉及的两个不同文件,它们在项目管理和构建过程中扮演着不同的角色。以下是它们之间的联系和区别:

Flutter.podspec

定义:Flutter.podspec 是一个用于定义 Flutter 模块的 Podspec 文件。它包含了模块的元数据、源代码的位置、依赖关系、编译设置等信息。

作用:它告诉 CocoaPods 如何集成 Flutter 模块到 iOS 项目中,包括如何获取源代码、编译和链接模块。

内容:通常包含模块的名称、版本、描述、作者、源代码路径、依赖的 Pods、资源文件等。

更新:当 Flutter 模块更新时,Flutter.podspec 文件可能需要被修改以反映这些变化。

Podfile.lock

定义:Podfile.lock 是一个由 CocoaPods 生成的文件,它记录了当前项目依赖的每个 Pod 的确切版本。

作用:确保项目中的所有开发者以及持续集成环境使用相同版本的依赖库,从而保持构建的一致性。

内容:包含每个 Pod 的版本号、校验和、依赖关系以及安装时的依赖树。

更新:当运行 pod install 或 pod update 命令时,Podfile.lock 可能会被更新以反映依赖关系的改变。

联系

依赖管理:两者都与依赖管理有关。Flutter.podspec 定义了 Flutter 模块自身的依赖,而 Podfile.lock 确保了这些依赖的具体版本。

项目构建:在构建项目时,CocoaPods 会使用 Flutter.podspec 来集成 Flutter 模块,并使用 Podfile.lock 来确保所有依赖项的版本正确。

区别

文件类型:Flutter.podspec 是一个 Podspec 文件,用于定义一个 Pod;而 Podfile.lock 是一个锁定文件,用于记录项目依赖的详细版本信息。

内容:Flutter.podspec 包含了模块的定义和配置,而 Podfile.lock 只记录了依赖的版本信息。

更新频率:Flutter.podspec 在模块更新时可能需要修改,而 Podfile.lock 在每次运行 pod install 或 pod update 时都可能更新。

作用域:Flutter.podspec 是针对单个 Flutter 模块的,而 Podfile.lock 是针对整个 iOS 项目的。

总的来说,Flutter.podspec 是一个用于定义和配置 Flutter 模块的文件,而 Podfile.lock 是一个用于确保项目依赖一致性的锁定文件。它们共同工作,帮助开发者管理和维护 iOS 项目中的依赖关系。

swift和Objective-C都是苹果的语言,类似于vue和js区别吧我个人理解,一个新一个老。

这里就不得不提一下一个报错:
'install_plugin-Swift.h' file not found

看看ai说的:

这三个文件共同构成了一个Flutter插件,它们各自的作用和联系如下:

文件作用

InstallPlugin.h

这是一个Objective-C的头文件,它声明了一个InstallPlugin类,该类遵循FlutterPlugin协议。

它的作用是提供一个公开的接口,以便Flutter框架可以注册和使用这个插件。

InstallPlugin.m

这是一个Objective-C的实现文件,它包含了InstallPlugin类的具体实现。

在这个文件中,它调用了SwiftInstallPlugin的registerWithRegistrar:方法,将Swift编写的插件注册到Flutter框架中。

SwiftInstallPlugin.swift

这是一个Swift源文件,它定义了一个SwiftInstallPlugin类,该类同样遵循FlutterPlugin协议。

它实现了具体的方法,比如gotoAppStore,这些方法可以通过Flutter的MethodChannel被Dart代码调用。

文件联系

InstallPlugin.h和InstallPlugin.m共同定义了一个Objective-C的插件入口点,它允许Flutter框架与Swift编写的插件交互。

SwiftInstallPlugin.swift包含了插件的实际实现,它使用Swift编写,因此需要通过Objective-C的桥接头文件与Objective-C代码进行交互。

报错原因

错误 'install_plugin-Swift.h' file not found 发生在InstallPlugin.m文件中,这通常是因为以下原因:

Xcode没有正确地为Swift类生成Objective-C的头文件。

桥接头文件没有被正确地配置在Xcode的构建设置中。

最终我找到了其他文件同样目录结构都是这样三个文件的把这个

复制代码
#import <install_plugin-Swift.h>

改成

复制代码
#if __has_include(<install_plugin/install_plugin-Swift.h>)
#import <install_plugin/install_plugin-Swift.h>
#else
#import "install_plugin-Swift.h"
#endif

行吧先写到这,总结一下:苹果垃圾!

相关推荐
liulian091619 小时前
Flutter for OpenHarmony 跨平台开发:单位转换功能实战指南
flutter
千码君201620 小时前
Trae:一些关于flutter和 go前后端开发构建的分享
android·flutter·gradle·android-studio·trae·vibe code
maaath21 小时前
【maaath】Flutter for OpenHarmony 手表配饰应用实战开发
flutter·华为·harmonyos
maaath1 天前
【maaath】Flutter for OpenHarmony 跨平台计算器应用开发实践
flutter·华为·harmonyos
空中海1 天前
iOS 动态分析、抓包与 Frida Hook
ios·职场和发展·蓝桥杯
maaath1 天前
【maaath】Flutter for OpenHarmony 闹钟时钟应用开发实战
flutter·华为·harmonyos
maaath1 天前
【maaath】Flutter for OpenHarmony 短信管理应用实战
flutter·华为·harmonyos
空中海1 天前
iOS 静态逆向、IPA 结构与 Mach-O 分析
ios·华为·harmonyos
Mr -老鬼1 天前
EasyClick 双端自动化智能体|Android&iOS 全平台 EC 脚本开发助手
android·ios·自动化·易点云测·#easyclick·#ios自动化
maaath1 天前
【maaath】Flutter for OpenHarmony打造跨平台便签备忘录应用
flutter·华为·harmonyos