在Windows环境下使用Flutter开发iOS设备应用程序

147

我刚接触Flutter,不知道是否可行。

我已经按照给定的说明(https://flutter.io/setup/)在IntelliJ中尝试构建演示代码。它可以在Android设备上运行良好,但无法找到编译并在我的iOS设备上运行的选项。


4
为了在iOS平台运行/编译,你需要一台Mac电脑。自从第一代iPhone问世以来,这个要求就一直存在。 - Morrison Chang
@MorrisonChang 是正确的。你可能无法在 Windows 机器上运行 iOS 版本。 - dasfima
使用NativeScript可以在云端构建iOS版本(https://docs.nativescript.org/sidekick/getting-started/build)。使用Xamarin,您可以使用Xamarin Live Player应用程序在iOS设备上测试代码。我希望Google将来也能推出类似的东西。 - ndreisg
不幸的是,Flutter 无法胜任此任务。 Flutter 看起来很不错,但使用 Adobe Air,您可以通过 USB 在 iOS 设备上构建和运行应用程序,而无需使用 MacOS。Adobe 很久以前就有了这个功能,Google 也应该能够提供支持。 - Fuad All
8个回答

118

您可以使用Android Studio或Visual Studio Code在Linux或Windows上进行主要开发。然后使用git将代码移动到macOS上,在iOS模拟器/设备上使用Xcode进行测试,并将其部署到App Store。

您可以在macOS上完成所有开发,但无法在Linux或Windows上完成所有开发。我对苹果公司制造过于昂贵的机器并强迫我们购买它们感到不太满意。由于我买不起快速的苹果电脑,所以我计划在Linux上进行大部分开发,然后只在我的缓慢的Mac Mini上进行测试和部署。

更新

现在似乎有更多的可能性。请阅读以下文章:

个人而言,我最终花了太多钱购买了一台MacBook Pro。我必须承认它很方便,但到目前为止,我做的很少真正需要它。我在Android Studio中进行所有学习和开发,并通常使用Android模拟器。偶尔我会启动iOS模拟器,但我并不需要它。

我的建议是,在您学习编程和开发您的第一个Flutter应用程序期间,尽可能地继续使用您当前的系统(Windows或Linux)。最终,您可能会感激在同一台机器上拥有iOS模拟器和Xcode的便利性,但没有必要急于获得这种便利。


11
还有一些托管的虚拟 Mac 可供使用。我正在使用一个云托管的虚拟机,它非常适合编译。另一种选择是在您的计算机上使用虚拟机。 - Bostrot
1
@Bostrot 有没有托管 Mac 的链接可以提供? - gegobyte
1
@Chinmay Sarupria 我个人只知道macincloud,但是通过谷歌搜索可以得到更多信息。 - Bostrot
1
有人可以推荐一个关于如何在Windows上设置带有Mac OS的虚拟机的教程吗? - Kirill Karmazin

39

您可以通过Mac(或Hackintosh,或VM)来完成这个操作,但由于我们没有访问macOS机器的权限,因此可以通过CodemagicTravis CI远程使用 - 完全免费!(只要您的项目在GitHub、Bitbucket或GitLab存储库中)。

首先,创建一个帐户或登录codemagic.io

然后,单击应用程序旁边的设置(齿轮)图标。向下滚动并单击“Build”。确保模式设置为Debug,并在构建平台下选择iOS。

之后,构建应用程序(启动您的第一个构建)。

Codemagic将通过电子邮件向您发送一个.app文件。将其重命名为以.zip结尾。然后解压缩它,您将得到一个名为Runner.app的文件夹。创建一个名为Payload的文件夹,并将Runner.app放在其中。最后,压缩名为Payload的文件夹 - 这将是您的IPA文件(您可以将其重命名为.ipa )。

另一种方法:使用Travis CI构建应用程序 您需要在Travis CI上创建一个帐户,并让它访问您的GitHub帐户。

然后,在项目的根目录下创建.travis.yml文件,并填写以下内容:

 os: osx 
    language: generic 
    before_script: 
     - brew update 
     - brew install --HEAD usbmuxd 
     - brew unlink usbmuxd 
     - brew link usbmuxd 
     - brew install --HEAD libimobiledevice 
     - brew install ideviceinstaller 
     - brew install ios-deploy 
     - git clone https://github.com/flutter/flutter.git -b beta --depth 1 
    script: 
     - flutter/bin/flutter build ios --debug --no-codesign
    cache: 
      directories: 
      - $HOME/.pub-cache
    before_deploy: 
      - pushd build/ios/iphoneos 
      - mkdir Payload 
      - cd Payload 
      - ln -s ../Runner.app 
      - cd .. 
      - zip -r app.ipa Payload 
      - popd

更多信息


2
是的,但我想在iOS上运行它,并在推出之前至少查看一次新版本。你不能只在Android上测试,然后构建iOS生产版本。 - Kirill Karmazin
@KirillKarmazin 我建议你基于操作系统编写测试,并在构建和发布之前使用 Fastlane 或 Codemagic CI/CD。在你提到的其他场景中,你需要在 Mac 上构建 Flutter,然后你的目标发布首先会是 iOS,然后是 Android。 - Payam Khaninejad
我的 Bitbucket 存储库必须公开才能在 CodeMagic 上免费构建吗? - Ulysses Alves
1
@UlyssesAlves 不需要公开。 - Payam Khaninejad
1
免费但有时间限制,使用macOS虚拟机编译也很昂贵在Codemagic/Github Actions上。 - Ruelos Joel

12

你能否将你的iPhone设备连接到虚拟机上的Mac OS? - Kirill Karmazin
我没有测试过那个..但我不认为这是可能的...一个模拟器可能会完成这项工作。 - emanuel sanga
4
我能确认这是可行的。我没有遇到任何问题就成功完成了。我在Windows 8.1上设置了一个VMware Workstation虚拟机,然后运行了Mojave映像。接下来你需要安装Xcode并完成与Apple ID相关的所有登录步骤。然后你可以连接你的iPhone(使用你的Apple ID登录),一切都能正常工作。顺便说一下 - 真实物理设备似乎是测试通知的唯一方式,因为它们在模拟器上无法正常工作(例如如果你正在使用Firebase)。 - Kirill Karmazin
请注意,在非苹果硬件上安装MacOS违反了其使用条款。 - Inrego
是的,@Inrego。但从Quora上看,似乎只有在大规模商业生产时才会产生影响。这是链接https://www.quora.com/Is-it-illegal-to-install-OS-X-on-non-Apple-hardware-aka-Hackintosh。如果您也能分享您的资源供其他人查看,我会很高兴的。 - emanuel sanga

9

6

苹果已经将iOS应用程序的编译独家提供给macOS。

如果您想在Windows上运行它,请查看此答案和讨论以了解解决方法。

基本上,对于Flutter来说,没有其他方法,但XamarinNativeScript支持它。


4

您可以阅读这篇文章

它使用一些工具和CodeMagic来构建Flutter应用程序以供iOS使用。

  1. 将您的应用程序放在GitHub上(公开),并授权给codemagic
  2. 然后,您应该使用CodeMagic为IOS构建您的应用程序。
  3. 然后,您应该使用Cydia Impactor对CodeMagic发送给您的文件进行签名
  4. 通过安装libimobiledevice、ideviceinstaller和which来准备您的Windows计算机
  5. 修改Flutter代码以避免查找Xcode
  6. 运行和调试

我使用过这种方法,它很有效,您可以热重载和调试应用程序,但缺点是您必须在Cydia Impactor中输入Apple ID密码,因此您应该使用第二个Apple ID,并在Apple签名配置文件到期后再次使用Cydia Impactor签名代码。但它比购买Mac或租用Mac要便宜得多。


很遗憾,目前这种方法不起作用。Cydia Impactor论坛上有一些记录,自2019年12月以来没有得到回答,涉及71错误消息,无法安装应用程序。此外,他们要求您提供iCloud登录名和密码。 - kovalyovi

2
在Windows上,你还可以使用名为Appollo的Python实用工具来完成以下操作:
  • 配置XCode
  • 在iOS模拟器上测试你的应用
  • 构建IPA以进行设备测试
  • 签名和发布你的应用
这是一个有关Appollo构建和发布应用的快速演示:https://www.youtube.com/watch?v=D9NYNmXFphE 首先,你需要通过控制台安装Appollo CLI工具。
pip install appollo

其次,使用您的Apple开发者帐户设置Appollo:https://appollo.readthedocs.io/en/master/tutorial/2_configure_app_store_connect.html 第三,如果您想构建和发布应用程序进行测试和/或发布,可以在终端中运行以下命令:
appollo build start

这就是全部内容了。

2
现在我们有了 Xcode Cloud https://developer.apple.com/xcode-cloud/,因此希望我们能够看到一些与 iOS 的解耦。如果我们能够在 Windows 上拥有 iOS 模拟器,那就会为 Windows iOS 开发加冕。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接