当前位置: 首页 > article >正文

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

在这里插入图片描述
行吧先写到这,总结一下:苹果垃圾!


http://www.kler.cn/a/404073.html

相关文章:

  • 《操作系统》实验内容 实验二 编程实现进程(线程)同步和互斥(Python 与 PyQt5 实现)
  • OpenCV与AI深度学习|16个含源码和数据集的计算机视觉实战项目(建议收藏!)
  • 泷羽sec学习打卡-网络七层杀伤链1
  • 鸿蒙多线程开发——线程间数据通信对象01
  • 【论文笔记】Large Brain Model (LaBraM, ICLR 2024)
  • java Map 遍历 详解
  • Matlab 答题卡方案
  • Unity 使用 Excel 进行配置管理(读Excel配置表、Excel转保存Txt 文本、读取保存的 Txt 文本配置内容)
  • 时序论文22|ICML24港科大:面向多变量不规则的时间序列预测方法
  • 设计模式学习[8]---原型模式
  • Elasticsearch面试内容整理-常见问题和解决方案
  • 微积分复习笔记 Calculus Volume 1 - 6.4 Arc Length of a Curve and Surface Area
  • nacos开启鉴权与配置加密
  • Python | 结合动态加载importlib模块来理解inspect模块的使用
  • Vue项目部署至服务器后报404错误的原因分析及解决方案
  • Dubbo HTTP接入架构
  • 丹摩征文活动 | SD3+ComfyUI:图文部署新境界,2合1效率提升,简化步骤对抗传统挑战!
  • UniApp在Vue3下使用setup语法糖创建和使用自定义组件
  • C++桥接模式在使用时需要注意什么
  • 算法定制LiteAIServer检测算法入侵检测算法平台部署:危险区域人员闯入治理
  • Python中Tushare(金融数据库)入门详解
  • 【pytorch-02】:张量的索引、形状操作和常见运算函数
  • 2024强网杯--babyheap house of apple2解法
  • Unity3d场景童话梦幻卡通Q版城镇建筑植物山石3D模型游戏美术素材
  • 细说STM32单片机DMA中断收发RTC实时时间并改善其鲁棒性的另一种方法
  • SAP Ariba Contracts 基本介绍