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

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

相关推荐
crasowas4 小时前
iOS - 超好用的隐私清单修复脚本(持续更新)
ios·app store
ii_best6 小时前
ios按键精灵脚本开发:ios悬浮窗命令
ios
m0_7482478011 小时前
Flutter Intl包使用指南:实现国际化和本地化
前端·javascript·flutter
Code&Ocean11 小时前
iOS从Matter的设备认证证书中获取VID和PID
ios·matter·chip
/**书香门第*/11 小时前
Laya ios接入goole广告,开始接入 2
ios
迷雾漫步者12 小时前
Flutter组件————PageView
flutter·跨平台·dart
迷雾漫步者19 小时前
Flutter组件————FloatingActionButton
前端·flutter·dart
coder_pig1 天前
📝小记:Ubuntu 部署 Jenkins 打包 Flutter APK
flutter·ubuntu·jenkins
捡芝麻丢西瓜1 天前
flutter自学笔记5- dart 编码规范
flutter·dart
恋猫de小郭1 天前
什么?Flutter 可能会被 SwiftUI/ArkUI 化?全新的 Flutter Roadmap
flutter·ios·swiftui