怀念夏天 发表于 2024-8-2 10:20:49

[Flutter]打包IPA

1.直接利用Xcode运行iOS工程

不用flutter构建,在Xcode中是可以独立进行构建运行和打包发布的。
1).运行项目

先将flutter的build清算
$ flutter clean
$ flutter pub get 然后立即用XCode打开iOS工程运行
运行会报错:
error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. 提示你需要先打开终端,cd到iOS工程目录实验pod install,然后再运行项目。
$ pod install 到这里,项目就已经正常运行得手机。

2).查看构建内容

Commond + Shift + G 进入~/Library/Developer/Xcode/DerivedData目录,查看构建内容。
我们会在Debug-iphoneos中看到一个Runner.app,这个Runner.app 是一个iOS应用程序包。它是一个可实验的应用程序目录,包罗了全部的资源和编译后的代码,用于在 iOS 装备或模仿器上运行。
https://i-blog.csdnimg.cn/blog_migrate/5ee1a126d02c6c64985268424a8b382d.png
右键选择“显示包内容”,我们会看到一个名为“Runner”的Mach-O文件。Mach-O (Mach Object) 文件格式是 macOS 和 iOS 利用体系用于可实验文件、目标代码、共享库和焦点转储的文件格式。
别的,还可看到全部的资源和依赖的框架。
https://i-blog.csdnimg.cn/blog_migrate/d50e5a445e0ef103fae5abd194c6dc88.png

3).打包

在Xcode,进入Product -> Scheme -> Edit Scheme
https://i-blog.csdnimg.cn/blog_migrate/867ba7214fba034096ee2805257bb0dc.png
左边选择“Archive”,右侧设置“Build Configuration”控制打包出来的IPA是什么环境。
https://i-blog.csdnimg.cn/blog_migrate/84956940edd89f7f99f75c960f3f244e.png
 然后,到Product选择Archive以构建和归档应用。
https://i-blog.csdnimg.cn/blog_migrate/189099400da14d8748106ab1a2f78e4f.png
归档完成后,在 Organizer 中选择您的归档。
点击 Distribute App。
选择分发方法,比方 Ad Hoc 或 App Store,根据您打包的目标。
按照提示利用,选择签名证书和设置文件。
选择一个位置保存导出的 IPA 文件。
https://i-blog.csdnimg.cn/blog_migrate/276e053119473bbcf7ca99f4e13cac53.png

2.利用flutter构建能在模仿器运行的包

为了在模仿器上安装应用程序,你需要构建一个专门为 iOS 模仿器架构(如 x86_64 或 arm64 )编译的版本。
$ flutter build ios --simulator 将Runner.app拖入iPhone模仿器就可以运行。缺少真机时,就可以用这种方式打包,让测试人员安装模仿器来测试。

3.利用flutter构建能在iPhone真机运行的包

1).构建Runner.app

利用flutter build ios命令,默认会构建一个release环境的Runner.app程序包。
// 构建一个release环境的包
$ flutter build ios 或
// 构建一个release环境的包
$ flutter build ios --release 构建一个debug环境的包:
$ flutter build ios --debug 因为还没签名,所以是无法直接安装到真机上,又因为架构差别也无法安装到模仿器上。
假如你再用Xcode打开iOS项目运行项目到真机,会发现Xcode会重新构建一个Runner.app来进行安装。
那么有人就会问了,既然安装不了,那么用flutter build ios构建的Runner.app有什么用呢,还不如到Xcode直接打包生成ipa文件来进行分发。是的,可以这样理解,对初学者来说用Xcode打包是最简单的。
实际上,我们拿到Runner.app后,还可以利用命令行或第三方工具将其签名打包成IPA。

2).基于命令行手动创建.ipa文件

假如您希望在不利用 Xcode 的情况下将 Flutter 构建的Runner.app转换为.ipa格式,可以利用命令行工具。
a.终端cd到Runner.app地点目录

$ cd /Users/gamin/Desktop/fd b.创建 Payload 目录

在您的 Runner.app 地点的目录中,创建一个名为 Payload 的文件夹。
$ mkdir Payload c.将 Runner.app 移动到 Payload 目录

将 Runner.app 文件夹移动到 Payload 文件夹中。
$ mv Runner.app Payload/ d.压缩 Payload 目录

将 Payload 文件夹压缩为 .ipa 文件。确保您的当前工作目录包罗 Payload 文件夹。
$ zip -r Runner.ipa Payload/ 这样,您就会得到一个名为 Runner.ipa的文件。然而,这个.ipa文件仍需要一个有效的签名才能安装到 iOS 装备上。通常,您需要利用苹果的开发者证书和设置文件来签名应用程序,而这通常通过 Xcode 或其他代码签名工具完成。

3).利用第三方工具对.ipa进行签名

除了利用 Xcode 进行签名之外,还有第三方工具可以用来为 iOS 应用程序(包括 Flutter 构建的 
Runner.app)签名。这些工具通常被开发者利用在没有苹果开发者账号的情况下进行测试,或者进行越狱装备上的安装。然而,这些方法通常不被苹果官方支持,而且可能违反苹果的服务条款,因此在商业和生产环境中利用时需要谨慎。
以下是一些第三方签名工具的例子:
爱思助手:


[*] 去工具箱中选择“IPA签名”。
Cydia Impactor:


[*] Cydia Impactor 是一个流行的应用程序,可以将 IPA 文件安装到 iOS 装备上。它要求用户提供一个有效的 Apple ID 来签署应用程序,即使没有官方开发者账号也可以利用。
App Signer:


[*] 这是一个 macOS 应用程序,可以用来对 iOS 应用程序进行签名。它同样需要一个有效的 Apple ID 和对应的证书来进行签名。
iOS App Signer:


[*] 这是一个开源的工具,通过图形用户界面提供了应用程序签名的功能。它可以与 Xcode 生成的证书和设置文件一起利用。
AltDeploy:


[*] 类似于 Cydia Impactor,AltDeploy 答应用户在 Mac 上签署并安装 IPA 文件到 iOS 装备。
AltStore:


[*] AltStore 是另一种方法,它答应用户通过一个特殊的应用商店安装非 App Store 应用。它利用用户的 Apple ID 来签署应用程序,以便它们可以安装在未越狱的 iOS 装备上。

4).利用命令行工具 codesign 进行签名

假如您有苹果的开发者证书,您可以利用 codesign 命令行工具来手动签名 Runner.app,然后再打包为 .ipa。以下是 codesign 的基本用法:
$ codesign -s "YourCertificateName" -f --entitlements YourEntitlements.entitlements Runner.app 在这里,“YourCertificateName”是您的开发者证书名称,“YourEntitlements.entitlements”是您的应用特权设置文件。您可以在 Keychain Access 应用中找到您的证书名称。
请留意,手动签名和打包应用程序可能会遇到许多问题,特殊是在证书和设置文件管理方面。Xcode 提供了自动化的签名和打包流程,因此假如可能,建议利用 Xcode 来管理这些步骤。
由于这些方法绕过了苹果的正式工具和程序,所以不建议用于生产环境或分发。对于正式的发布,您应该利用 Xcode 或 Apple 提供的其他官方工具来确保您的应用符合苹果的安全和分发要求。




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: [Flutter]打包IPA