将Flutter程序打包为ios应用并进行安装使用

news2025/1/20 11:01:19

如果直接执行flutter build ios:

Building com.example.myTimeApp for device (ios-release)...
════════════════════════════════════════════════════════════════════════════════
No valid code signing certificates were found
You can connect to your Apple Developer account by signing in with your Apple ID
in Xcode and create an iOS Development Certificate as well as a Provisioning 
Profile for your project by:
  1- Open the Flutter project's Xcode target with
       open ios/Runner.xcworkspace
  2- Select the 'Runner' project in the navigator then the 'Runner' target
     in the project settings
  3- Make sure a 'Development Team' is selected under Signing & Capabilities > Team. 
     You may need to:
         - Log in with your Apple ID in Xcode first
         - Ensure you have a valid unique Bundle ID
         - Register your device with your Apple Developer Account
         - Let Xcode automatically provision a profile for your app
  4- Build or run your project again
  5- Trust your newly created Development Certificate on your iOS device
     via Settings > General > Device Management > [your new certificate] > Trust

For more information, please visit:
  https://developer.apple.com/library/content/documentation/IDEs/Conceptual/
  AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html

Or run on an iOS simulator without code signing
════════════════════════════════════════════════════════════════════════════════
No development certificates available to code sign app for device deployment

为设备(ios-release)构建com.example.myTimeApp... ════════════════════════════════════════════════════════════════════════════════ 找不到有效的代码签名证书 您可以通过在Xcode中使用您的Apple ID登录并创建iOS开发证书以及为您的项目创建一个 配置文件来连接到您的Apple开发者帐户,方法如下: 1- 使用以下命令打开Flutter项目的Xcode目标: open ios/Runner.xcworkspace 2- 在导航器中选择“Runner”项目,然后选择“Runner”目标 在项目设置中 3- 确保在Signing & Capabilities > Team下选择了“Development Team”。 您可能需要: - 首先使用您的Apple ID在Xcode中登录 - 确保您拥有一个有效的唯一Bundle ID - 使用您的Apple开发者帐户注册您的设备 - 让Xcode自动为您的应用程序配置配置文件 4- 再次构建或运行您的项目 5- 在iOS设备上信任您新创建的开发证书 通过设置 > 通用 > 设备管理 > [您的新证书] > 信任

获取更多信息,请访问: https://developer.apple.com/library/content/documentation/IDEs/Conceptual/ AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html

或者在没有代码签名的情况下在iOS模拟器上运行 ════════════════════════════════════════════════════════════════════════════════ 没有可用的开发证书来对设备部署进行代码签名


要将Flutter应用程序编译为iOS上可用的app,需执行以下步骤:

  1. 安装Xcode

    首先,需要在macOS系统上安装最新版本的Xcode。Xcode是Apple提供的集成开发环境,用于编写iOS、macOS、watchOS和tvOS应用程序。

  2. 配置iOS模拟器

    启动Xcode,进入Xcode > Preferences > Components,并安装iOS模拟器组件。这将允许我们在macOS上运行和测试iOS应用程序。

    注意,Xcode事情比较多, 需要打开项目里面ios文件夹,不然会报错 could not open file(具体的路径)

  3. 创建iOS模拟器

    在Xcode中,选择Xcode > Open Developer Tool > Simulator 打开iOS模拟器。

alt

  1. 配置Flutter开发环境 在macOS的终端中,运行以下命令来启用iOS平台支持:

    flutter config --enable-ios
alt
  1. 启动模拟器

    在Flutter项目目录下,运行以下命令来启动iOS模拟器并安装应用程序:

    flutter run
alt
alt

Flutter将自动检测并列出所有可用的iOS模拟器设备。选择一个合适的模拟器即可在其中运行我开发的应用程序。

这个地址 http://127.0.0.1:9100/home?uri=http://127.0.0.1:64534/zqL1_Dh8L-8=/  能进行debug
alt
  1. 构建release版本

    要构建最终的发布版本(release build),使用以下命令:

    flutter build ios

    这将在ios/build/Products/Release-iphoneXX目录下生成一个.app文件。可以将该文件提交到App Store进行审核和分发。

如果想要在真实的iOS设备上运行该应用程序,则需要一个付费的Apple开发者账户,以及对代码进行签名和配置。该过程比在模拟器上运行略微复杂一些。

但在执行flutter build ios还是报最开始的错误

执行flutter doctor -v

[✓] Flutter (Channel stable, 3.19.6, on macOS 13.0 22A380 darwin-arm64, locale zh-Hans-CN)
    • Flutter version 3.19.6 on channel stable at /Users/fliter/Downloads/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 54e66469a9 (3 周前), 2024-04-17 13:08:03 -0700
    • Engine revision c4cd48e186
    • Dart version 3.3.4
    • DevTools version 2.31.1
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/fliter/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/fliter/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.10+0-17.0.10b1087.21-11572160)
    • All Android licenses accepted.

[!] Xcode - develop for iOS and macOS (Xcode 14.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E300c
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to
        your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install see https://guides.cocoapods.org/using/getting-started.html#installation for
      instructions.

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.10+0-17.0.10b1087.21-11572160)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.89.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension can be installed from:
      🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (4 available)
    • iPhone 14 Pro (mobile)     • F598C6ED-1F79-4764-AC82-2FBAF9612F39 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-16-4 (simulator)
    • iPhone 14 Pro Max (mobile) • 04892CB6-FD81-4F25-9FC9-F5CE20B4A765 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-16-4 (simulator)
    • macOS (desktop)            • macos                                • darwin-arm64   • macOS
      13.0 22A380 darwin-arm64
    • Chrome (web)               • chrome                               • web-javascript • Google
      Chrome 124.0.6367.119

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

发现

    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to
        your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install see https://guides.cocoapods.org/using/getting-started.html#installation for
      instructions.

CocoaPods未安装。
CocoaPods用于获取iOS和macOS平台端的插件代码,以响应Dart端对插件的使用。
如果没有安装CocoaPods,插件将无法在iOS或macOS上工作。
有关更多信息,请参阅https://flutter.dev/platform-plugins。
要安装,请参阅https://guides.cocoapods.org/using/getting-started.html#installation获取安装说明。

参考 cocoapods的安装和使用, 安装cocoapods.

然后再次执行flutter doctor -v, 都是对号, No issues found!


但依然报最开始的错误, 可见可能和cocoapods的安装没直接关系,还是签名的问题

对于ios开发,为了安全,签名是必不可少的..否则只能在Mac上面用模拟器玩一玩,无法安装到手机上..这点和安卓不一样

alt

而想要签名,就需要一个开发者账号, 一般的普通个人版,99美刀一年 (真特么贵啊,而且还不是一次性的,每年都要续费)..

(公司/组织 类型的账号更贵)

> 只有拥有开发着账号,才可以申请开发者 / 发布者证书以及相关配置授权文件,进而在 iOS 真机上开发调试 Applocation 或发布至 Apple Store。

关于 IOS 的一些基础说明[1]



alt

果然,不氪金不行...

Communication with Apple failed. Your team has no devices from which to generate a provisioning profile. Connect a device to use or manually add device IDs in Certificates, Identifiers & Profiles. https://developer.apple.com/account/

需要登录开发者中心,同意新的协议,并添加设备

alt

通过USB连接手机, 在iPhone上搜索 隐私和安全性,打开开发者模式(需要重启手机)

alt

要在 iOS 17 设备上进行调试,需要 Xcode 15。这需要 macOS 13.5 或更高版本。


更新系统后再试:

alt
alt

然后再次执行 flutter build ios

alt

在 Xcode 中, 打开Window-->Devices and Simulators, 单击下图中的+, 选择/Users/fliter/my_time_app/build/ios/iphoneos/Runner.app.

然后就能看到手机上安装了我开发的这个app

但是打开时会报错:

alt

你的设备管理设置不允许在这台iphone上使用开发者...

手机上,打开 设置-通用-VPN与设备管理,信任

alt
alt
alt
alt
alt



更多flutter的命令:

flutter -v       
Manage your Flutter app development.

Common commands:

  flutter create <output directory>
    Create a new Flutter project in the specified directory.

  flutter run [options]
    Run your Flutter application on an attached device or in an emulator.

Usage: flutter <command> [arguments]

Global options:
-h, --help                      Print this usage information.
-v, --verbose                   Noisy logging, including all shell commands executed.
                                If used with "--help", shows hidden options. If used with "flutter doctor",
                                shows additional diagnostic information. (Use "-vv" to force verbose logging in
                                those cases.)
    --prefixed-errors           Causes lines sent to stderr to be prefixed with "ERROR:".
    --quiet                     Reduce the amount of output from some commands.
    --[no-]wrap                 Toggles output word wrapping, regardless of whether or not the output is a
                                terminal.
                                (defaults to on)
    --wrap-column               Sets the output wrap column. If not set, uses the width of the terminal. No
                                wrapping occurs if not writing to a terminal. Use "--no-wrap" to turn off
                                wrapping when connected to a terminal.
-d, --device-id                 Target device id or name (prefixes allowed).
    --version                   Reports the version of this tool.
    --machine                   When used with the "--version" flag, outputs the information using JSON.
    --[no-]color                Whether to use terminal colors (requires support for ANSI escape sequences).
                                (defaults to on)
    --[no-]version-check        Allow Flutter to check for updates when this command runs.
                                (defaults to on)
    --enable-analytics          Enable telemetry reporting each time a flutter or dart command runs.
    --disable-analytics         Disable telemetry reporting each time a flutter or dart command runs, until it
                                is re-enabled.
    --suppress-analytics        Suppress analytics reporting for the current CLI invocation.
    --packages                  Path to your "package_config.json" file.

Local build selection options (not normally required):
    --local-engine-src-path     Path to your engine src directory, if you are building Flutter locally.
                                Defaults to $FLUTTER_ENGINE if set, otherwise defaults to the path given in
                                your pubspec.yaml dependency_overrides for sky_engine, if any.
    --local-engine              Name of a build output within the engine out directory, if you are building
                                Flutter locally.
                                Use this to select a specific version of the engine if you have built multiple
                                engine targets.
                                This path is relative to "--local-engine-src-path" (see above).
    --local-engine-host         The host operating system for which engine artifacts should be selected, if you
                                are building Flutter locally.
                                This is only used when "--local-engine" is also specified.
                                By default, the host is determined automatically, but you may need to specify
                                this if you are building on one platform (e.g. MacOS ARM64) but intend to run
                                Flutter on another (e.g. Android).
    --local-web-sdk             Name of a build output within the engine out directory, if you are building
                                Flutter locally.
                                Use this to select a specific version of the web sdk if you have built multiple
                                engine targets.
                                This path is relative to "--local-engine-src-path" (see above).

Options for testing the "flutter" tool itself:
    --show-test-device          List the special "flutter-tester" device in device listings. This headless
                                device is used to test Flutter tooling.
    --show-web-server-device    List the special "web-server" device in device listings.
    --ci                        Enable a set of CI-specific test debug settings.

Available commands:

Flutter SDK
  bash-completion   Output command line shell completion setup scripts.
  channel           List or switch Flutter channels.
  config            Configure Flutter settings.
  doctor            Show information about the installed tooling.
  downgrade         Downgrade Flutter to the last active version for the current channel.
  precache          Populate the Flutter tool's cache of binary artifacts.
  upgrade           Upgrade your copy of Flutter.

Project
  analyze           Analyze the project's Dart code.
  assemble          Assemble and build Flutter resources.
  build             Build an executable app or install bundle.
  clean             Delete the build/ and .dart_tool/ directories.
  create            Create a new Flutter project.
  drive             Run integration tests for the project on an attached device or emulator.
  gen-l10n          Generate localizations for the current project.
  pub               Commands for managing Flutter packages.
  run               Run your Flutter app on an attached device.
  test              Run Flutter unit tests for the current project.

Tools & Devices
  attach            Attach to a running app.
  custom-devices    List, reset, add and delete custom devices.
  daemon            Run a persistent, JSON-RPC based server to communicate with devices.
  debug-adapter     Run a Debug Adapter Protocol (DAP) server to communicate with the Flutter tool.
  devices           List all connected devices.
  emulators         List, launch and create emulators.
  install           Install a Flutter app on an attached device.
  logs              Show log output for running Flutter apps.
  screenshot        Take a screenshot from a connected device.
  symbolize         Symbolize a stack trace from an AOT-compiled Flutter app.

Run "flutter help <command>" for more information about a command.
Run "flutter help -v" for verbose help output, including less commonly used options.
参考资料
[1]

关于 IOS 的一些基础说明: https://nicogatekeeper.com/index.php/archives/10/

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1667606.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Multisim 14简易三人抢答器电路设计

multisim multisim&#xff0c;即电子电路仿真设计软件。Multisim是美国国家仪器&#xff08;NI&#xff09;有限公司推出的以Windows为基础的仿真工具&#xff0c;适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式&#xff0…

汇昌联信:做拼多多网点需要具备什么能力?

在当前电商行业高速发展的背景下&#xff0c;拼多多以其独特的商业模式迅速崛起&#xff0c;成为众多创业者和商家关注的焦点。想要运营一家成功的拼多多网点&#xff0c;不仅需要对平台规则有深入的了解&#xff0c;还需要具备多方面的能力。这些能力是确保网点稳定运营并实现…

【安全每日一讲】加强数据安全保护 共享数字化时代便利

前言 数据安全是数据治理的核心内容之一&#xff0c;随着数据治理的深入&#xff0c;我不断的碰到数据安全中的金发姑娘问题&#xff08;指安全和效率的平衡&#xff09;。 DAMA说&#xff0c;降低风险和促进业务增长是数据安全活动的主要驱动因素&#xff0c;数据安全是一种资…

47.乐理基础-音符的组合方式-连线

连线与延音线长得一模一样 它们的区别就是延音线的第三点&#xff0c;延音线必须连接相同的音 连线在百分之九十九的情况下&#xff0c;连接的是不同的音&#xff0c;如下图的对比&#xff0c;连线里的百分之1&#xff0c;以现在的知识无法理解&#xff0c;后续再写 在乐谱中遇…

【MySQL】聊聊你不知道的前缀索引原理以及使用场景

背景 在本周的时候&#xff0c;接到一个需求&#xff0c;需要通过加密后的身份证 md5 去数据库里匹配。由于业务方存储的是身份证 md5username 构建的一列&#xff0c;并且没有加索引。 解决方案&#xff1a;1.新建一列 md5的列&#xff0c;加索引 2.对现有的列进行加前缀索引…

数组实现循环队列

1、分析 循环队列最主要的特点为当前面的空间被pop后&#xff0c;后面的数据可以插入到前面空余的数据中去&#xff1b; 所以最难的部分为判断什么时候为空什么时候为满&#xff1a; a、空满问题 我们先来分析当数据满时&#xff0c;head和tail相等&#xff08;tail认为是指…

C++:9.scanf扩展——原来这么好用!

——scanf&#xff1a;我**不常用了&#xff1f; 有一天看到了一道题&#xff1a; C 输入一个时间&#xff0c;输出它属于&#xff0c;白天&#xff0c;下午还是黑夜。 输入样例&#xff1a; 15:20 00:00 13:14 05:20 11:45 14:00 ……??? 大胆题目小瞧我的编程水平!!!!!…

什么是 IIS

什么是 IIS 一、什么是 IIS二、IIS 的功能三、IIS 几点说明四、IIS 的版本五、IIS 常见的组合 欢迎关注【云边小网安】 一、什么是 IIS IIS&#xff1a;指 Internet Information Services &#xff0c;是一种由微软公司开发的 Web 服务器应用程序。IIS&#xff1a;是一种 Web …

GPU prompt

提问&#xff1a; GPU是如何与CPU协调工作的&#xff1f; GPU也有缓存机制吗&#xff1f;有几层&#xff1f;速度差异是多少&#xff1f; GPU渲染流程有哪些阶段&#xff1f;他们的功能分别是什么&#xff1f; Early-Z技术是什么&#xff1f;发生在哪个阶段&#xff1f;这个…

MySQL表死锁查询语句

步骤1&#xff1a;查询表死锁的sql语句&#xff1a; SELECT * FROM information_schema.PROCESSLIST where length(info) >0 ; 或 SELECT * FROM information_schema.INNODB_TRX; 步骤2&#xff1a;删除 kill "对应的线程id"

hadoop克隆虚拟机

克隆虚拟机 小白的Hadoop学习笔记 2024/5/11 9:42 文章目录 克隆虚拟机准备好模板机克隆* 记得先将模板机关机 配置ipifcfg-ens33hostnamehosts重启 测试是否成功ifconfigping xshell 准备好模板机 克隆 * 记得先将模板机关机 下一页>>下一页 选择创建完整克隆 起名字…

【大模型赋能开发者】海云安入选数世咨询LLM驱动数字安全2024——AI安全系列报告

近日&#xff0c;国内知名数字产业领域第三方调研咨询机构数世咨询发布了LLM驱动数字安全2024——AI安全系列报告。报告通过调研、公开信息收集等方式对目前十余家已具备LLM相关的应用能力安全厂商对比分析出了这一领域当前的产业现状并进行了各厂商的能力展示。 海云安凭借近…

Linux:文件系统

Linux&#xff1a;文件系统 磁盘物理结构存储结构逻辑结构 文件系统inode分区 & 分组分区管理inode Bitmap & inode TableBlock Bitmap & Data BlocksGDT & Super Block & Boot Block 重新理解目录 软硬链接软链接硬链接软硬链接的使用场景 磁盘 计算机需…

C++中vector的简单实现

文章目录 一、主要任务1. 查看文档的网站的链接2.内部模拟的函数 二、本人的模拟实现过程1. 所需模拟实现的函数a.构造、拷贝构造b. reverse()扩容c.insert()、push_back()插入数据d. erase()、pop_back()删除数据e. swap()交换f. begin()、end()非const与const迭代器g. 完善构…

什么是$t?$t的介绍及使用

目录 $t介绍&#xff1a; 作用&#xff1a; 安装国际化插件&#xff1a; 创建国际化资源文件 配置 vue-i18n &#xff1a; 切换语言&#xff1a; 下面为中文和英文状态下的效果&#xff1a; 如下面所示&#xff0c;这是一段前端代码&#xff1a; <el-form-item :label…

如何在 Linux / Ubuntu 上下载和安装 JMeter?

Apache JMeter 是一个开源的负载测试工具&#xff0c;可以用于测试静态和动态资源&#xff0c;确定服务器的性能和稳定性。在本文中&#xff0c;我们将讨论如何下载和安装 JMeter。 安装 Java&#xff08;已安装 Java 的此步骤可跳过&#xff09; 安装 Java 要下载 Java&…

序列到序列模型在语言识别Speech Applications中的应用 Transformer应用于TTS Transformer应用于ASR 端到端RNN

序列到序列模型在语言识别Speech Applications中的应用 A Comparative Study on Transformer vs RNN in Speech Applications 序列到序列(Seq2Seq)模型在语音识别(Speech Applications)中有重要的应用。虽然Seq2Seq模型最初是为了解决自然语言处理中的序列生成问题而设计的…

访客管理系统对于校园安全的重要性

校园访客办理计划是针对校园安全需求规划的安全办理体系&#xff0c;主要用于对校园外来人员的科学办理。要做好校园安全作业&#xff0c;把风险分子拒之门外尤为要害。校园访客办理计划实现访客实名制&#xff0c;并结合公安网、黑名单功用&#xff0c;对风险人员进行提前预警…

指针的奥秘(四):回调函数+qsort使用+qsort模拟实现冒泡排序

指针 一.回调函数是什么&#xff1f;二.qsort函数使用1.qsort介绍2.qsort排序整型数据3.qsort排序结构体数据1.通过结构体中的整形成员排序2.通过结构体中的字符串成员排序 三.qsort模拟实现冒泡排序 一.回调函数是什么&#xff1f; 回调函数就是一个通过函数指针调用的函数。 …

机器人系统ros2-开发实践07-将机器人的状态广播到 tf2(Python)

上个教程将静态坐标系广播到 tf2&#xff0c;基于这个基础原理这个教程将演示机器人的点位状态发布到tf2 1. 写入广播节点 我们首先创建源文件。转到learning_tf2_py我们在上一教程中创建的包。在src/learning_tf2_py/learning_tf2_py目录中输入以下命令来下载示例广播示例代码…