【问题标题】:Developing for iOS device in Windows environment with Flutter使用 Flutter 在 Windows 环境下开发 iOS 设备
【发布时间】:2018-04-10 22:33:48
【问题描述】:

我是 Flutter 的新手,只是想知道这是否可能。

我尝试使用 intellij 和给定指令 (https://flutter.io/setup/) 构建演示代码。它在android设备上运行良好,但在我的iOS设备上找不到编译和运行的选项。

【问题讨论】:

  • 我在 Windows 上运行 intellij CE。尝试编译颤振演示以在我的 iPhone SE 上运行。你知道怎么做吗?
  • 为了编译/运行 iOS,你需要一台 Mac。从第一部 iPhone 开始,这个要求就一直存在。
  • @MorrisonChang 是正确的。您可能无法在 Windows 机器上运行 iOS 版本。
  • 使用 NativeScript 可以在云端构建 iOS 版本 (docs.nativescript.org/sidekick/getting-started/build)。借助 Xamarin,您可以使用 Xamarin Live Player 应用在​​ iOS 设备上测试您的代码。我希望 Google 将来也会想出类似的东西。
  • 不幸的是,flutter 无法做到这一点。 flutter 看起来不错,但是使用 adobe air,您可以通过 USB 在 ios 设备上构建和运行应用程序,而无需 macos。 adobe 很久以前就有了)Google 也应该能够提供这种支持。

标签: ios flutter cross-platform


【解决方案1】:

Apple 已让编译 iOS 应用程序仅适用于 macOS。

您可以通读 this answer and thread 以了解使其在 Windows 上运行的变通方法。

Flutter 基本上没有其他方式,但XamarinNativeScript 提供支持。

【讨论】:

    【解决方案2】:

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

    您可以在 macOS 上进行所有开发,但不能在 Linux 或 Windows 上进行所有开发。我对 Apple 制造价格过高的机器然后强迫我们购买它们不太满意。由于我买不起一台速度很快的 Apple 电脑,我计划在 Linux 上进行大部分开发,然后在我非常慢的 Mac Mini 上进行测试和部署。

    更新

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

    就我个人而言,我最终花了太多钱买了一台 MacBook Pro。我不得不承认它很方便,但到目前为止,我所做的真正需要它的东西很少。我在 Android Studio 中进行所有的学习和开发,通常使用 Android 模拟器。我不时启动 iOS 模拟器,但我没有被要求这样做。

    我的建议是,只要您在学习,甚至在开发您的第一个 Flutter 应用程序时,就一直使用您当前的系统(Windows 或 Linux)。最终,您可能会喜欢在同一台机器上安装 iOS 模拟器和 Xcode 带来的便利,但肯定不会着急。

    【讨论】:

    • 还有一些可用的托管虚拟 Mac。我使用的是云托管的,它非常适合编译。另一种选择是在您的计算机上安装虚拟机。
    • @Bostrot 任何托管 Mac 的链接都会有所帮助。
    • @Chinmay Sarupria 我个人只知道 macincloud 但谷歌搜索会得到更多。
    • 谁能推荐一个关于如何在 Windows 上使用 mac OS 设置虚拟机的教程?
    【解决方案3】:

    您可以使用 Mac(或 Hackintosh 或 VM)执行此操作,但由于我们无法访问 macOS 机器,我们可以通过 CodemagicTravis CI 远程使用一台 — 完全免费! (只要您的项目位于 GitHub、Bitbucket 或 GitLab 存储库上)。

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

    然后,点击您的应用旁边的设置(齿轮)图标。向下滚动并单击“构建”。确保 Mode 设置为 Debug,然后在 Build for platforms 下选择 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
    

    More info

    【讨论】:

    • 是的,但我想在 iOS 上运行它并在推出之前至少看一次新版本。您不能只在 Android 上进行测试,然后为 iOS 产品构建
    • @KirillKarmazin 我建议您在构建和发布之前基于操作系统编写测试并使用 Fastlane 或 Codemagic CI/CD。在您提到的其他场景中,您必须在 Mac 中构建 Flutter,然后您的目标版本首先是 iOS,而不是 Android。
    • 我的 Bitbucket 存储库是否必须公开才能在 CodeMagic 上免费构建?
    • @UlyssesAlves 不,不需要公开
    【解决方案4】:

    你可以阅读this article

    它使用一些工具和CodeMagic 为 Ios 构建 Flutter 应用程序。

    1. 将您的应用程序放在 GitHub(公共)上并授予对 codemagic 的访问权限
    2. 那么您应该使用适用于 IOS 的代码魔法来构建您的应用程序。
    3. 那么您应该使用 Cydia Impactor 对文件进行签名 CodeMagic 已发送给您
    4. 通过安装 libimobiledevice 来准备你的 windows 机器, ideviceinstaller,哪个。
    5. 将 Flutter 代码修改为不寻找 Xcode
    6. 运行和调试

    我已经使用了这种方法,它工作正常,你可以热重载和调试你的应用程序,缺点是你必须在 Cydia Impactor 中输入苹果 ID 密码,这肯定你应该使用第二个苹果 ID,并且在苹果配置文件到期后你应该再次使用 Cydia Impactor 签署您的代码。但它比 Mac 或租用便宜得多。

    【讨论】:

    • 不幸的是,目前这种方法不起作用。 Cydia Impactor 论坛上有一些记录,自 2019 年 12 月以来,关于 71 条不允许安装应用程序的错误消息一直没有得到答复。此外,他们还会询问您的 iCloud 登录名和密码。
    【解决方案5】:

    我建议你使用虚拟机来做你的事情。我在我的 Windows 10 上安装了 Mojave MacOS,并且运行流畅!

    莫哈韦图像可以从https://getintopc.com/softwares/operating-systems/mac-os-mojave-10-14-1-vmware-image-free-download/获取

    我发现这很有用,因为我有一些我想从 Mac 世界中脱离出来的东西,而我有一个戴尔纬度。

    【讨论】:

    • 您能否将您的 iPhone 设备连接到虚拟机上的 mac os?
    • 我没有对此进行测试.. 但我不认为是否有可能......模拟器可能会完成这项工作
    • @emanuel_sanga 我可以确认这是可能的。我做到了没有任何问题。我在我的 Windows 8.1 上设置了一个 VMware Workstation 虚拟机并在那里运行一个 Mojave 映像。然后您必须安装 XCode 并执行所有与 Apple ID 相关的登录步骤。然后您可以插入您的 iPhone(使用您的 Apple ID 登录)并且它们工作正常。顺便说一句 - 真实的物理设备似乎是测试通知的唯一方法,因为它们在模拟器上无法正常工作(例如,如果您使用的是 Firebase)
    • 请注意,在非苹果硬件上安装是违反 MacOS 使用条款的。
    • 是的,是的@Inrego。但从 quora 来看,在大规模和商业生产中似乎有效果。这是链接quora.com/…。如果您也分享您的资源供其他人查看,我会很高兴
    【解决方案6】:

    在提出这个问题 3 年后:

    https://aws.amazon.com/about-aws/whats-new/2020/11/announcing-amazon-ec2-mac-instances-for-macos/

    AWS 现在支持一个需求 macOS 作为 EC2 实例。 由于刚刚发布,我自己还没有测试过,但希望这可以取代痛苦的小 mac mini,它在工作与生活之间没有平衡XD

    【讨论】:

      猜你喜欢
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 2020-07-28
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      相关资源
      最近更新 更多