我自己写的笔记很杂,下面的笔记是我在chatgpt4的帮助下完成的,希望可以帮到正在踩坑mac开发APP(flutter)的小伙伴
目标:通过MAC电脑使用flutter框架开发一款适用于苹果手机的一个APP应用
本博客的阅读顺序是,在了解了具体的环境布置的步骤后,看( 二.亲测参考可用的资料链接) 里面进行详细的mac电脑上的部署,出现问题遇到坑了就可以在本博客里面找找有没有类似的与解决方法。反正我之前网上找的时候就是没有个全乎的,要不是有gpt我都不知道要卡多久,看到这了,还不快点个赞,然后说谢谢博主。
(这里的笔记大概总结下,
1.完成在mac上的flutter的搭建(该部分涉及flutter,dart,Xcode, Android Studio 等环境的搭建,当你成功的在flutter doctor
命令的检测下看到全是绿色的勾勾的时候,你就完成了第一步如下图,最后的网络连接是感叹号可以不管哈,这是我flutter没有配置国内的网站的原因)
当完成上一步后,如果是flutter的学习就可以先停下了,利用安卓和 苹果的模拟器进行学习了,如果还有想试试将写好的app放到苹果设备(无论是手机还是平板还是mac),这个时候你就需要开始下一步了
2.交钱成为苹果开发者(我之前还以为之后上架APP才需要交钱,苹果你是真的会赚钱啊…),登陆苹果开发者网站,获取开发证书,登记上你要连接测试的实际硬件设备编号。
完成这些后,为了实机测试就可以开始下面的步骤了
3.在你的项目中完成你获得的证书的数据的配置,然后你就可以使用 Vscode或者Android Studio 进行APP或者网页的调试开发了。
以上步骤坑了我一周,希望大家能在这个文档的帮助下比我更快的弄出来,创了个QQ群 701602496,答案是 Python ,大家需要帮助的话加群互帮互助,毕竟我自己本人CSDN看留言很久才看一次。
(能科学上网的小伙伴也可以订阅这个我创建的flutter学习猫娘进行学习,不过poe好像要付费,如果没有领到免费次数的话就不用订阅了哈,别乱花钱。 https://poe.com/miao_miao_Flutter_01)
哦还有个要说的,虽然应该这种情况很少,但是哈,如果有人想开发的APP需要运行在版本很低的苹果系统版本上,那么你的mac版本就不要升到最高级然后按照xcode,不然写出来的APP可能没法适应低版本的硬件。
一.Mac上进行Flutter实体开发所需的准备的总体说明
(默认已经完成了mac上的flutter的环境搭建,没完成的参考下面的 二里面的参考链接)
1. 开发工具和硬件需求
进行实体开发,你需要有以下几个工具和础件:
- 苹果开发者账户:你需要一个苹果开发者账户才能进行实体开发。你可以在苹果开发者网站注册一个账户。注意,获取开发者账户可能需要付费。
- 开发证书:你需要从苹果开发者网站获取一个开发证书。这个证书将被用来签署你的应用,表明这个应用是由你开发的。
- 实体设备:当然了,你需要一个实体设备来进行开发和测试。你需要在苹果开发者网站注册你的设备。
2.获取开发证书和注册设备
- 登录苹果开发者网站:使用你的苹果开发者账户登录苹果开发者网站。
- 获取开发证书:在开发者网站上,你可以申请一个开发证书。你需要下载这个证书并安装到你的 Mac 上。这个证书将在你进行开发和调试时用来签署你的应用。
- 注册设备:你需要在开发者网站上注册你的实体设备。你需要提供设备的 UDID,这是一个唯一的设备识别码。
二.亲测参考可用的资料链接
1.Mac下Flutter环境安装参考
主要就参考这个配置【Flutter】Flutter安装和配置超详细(mac)
安装失败adb参考Mac安装adb环境
adb 是 Android Debug Bridge 的缩写,它是一个命令行工具,允许你与正在运行的 Android 设备或模拟器实例进行通信。你可以使用 adb 来安装和调试 Android 应用程序,以及执行各种设备和应用管理任务。
下面选择性参考,如果你的doctor flutter 检测发现还差哪些就补哪些
- 安装 Flutter SDK:你可以从官方网站下载 Flutter SDK。解压并将 Flutter 文件夹放在你的希望的位置。然后,将 Flutter/bin 目录添加到你的环境变量中。
- 安装 Dart SDK:Dart SDK 已经包含在 Flutter SDK 中,所以你不需要独立安装。
- 安装 Xcode:你可以从 App Store 下载安装 Xcode。Xcode 包含了开发 iOS 应用所需的软件和工具集。
- 安装 Android Studio:从官方网站下载并安装 Android Studio。在安装过程中,你可以选择同时安装 Android SDK 和 Android 虚拟设备。或参考 mac电脑安装Android studio
5.android sdk要用 Android Studio还得安装进行 mac 安装配置android sdk
2.成为苹果开发者的参考链接
- 苹果应用app证书申请创建参考
- 完成所有配置后实机操控参考 YouTube
- 苹果开发权限申请
5 苹果应用app参考资料:
参考链接:CSDN教程
参考视频:YouTube教程
-
苹果开发权限申请:
你需要访问Apple Developer Portal进行申请。完成申请付款后,你还会收到邮件用于上传身份证等的验证审核。 -
添加设备iPhone 的UDID:(要实机测试就得在买了开发者权限后进行设备登记)
参考链接:CSDN教程
设备添加完成后,你可以在Apple Developer Portal中看到结果。
三.flutter环境的常见问题与解决方法
具体的步骤的就不写了,别人的链接里面还是很详细的,只是有些坑记录下
1.flutter 命令没有
- 环境变量问题:如果你在设置环境变量后无法直接在终端使用 Flutter 命令,你可能需要检查你的环境变量设置。确保 Flutter/bin 目录已经被正确地添加到 PATH 环境变量中。
如果你在 macOS 上配置 Flutter 环境,你需要设置一些环境变量,包括 Android SDK 的路径以及 Flutter SDK 的路径。以下是如何进行设置的步骤:
提示,android-sdk的变量和设置flutter发布来源为国内用户网站, 需要设置也是按照下面的方法。(gedit是我常用的,没安装的用vim或者vi或者nano打开都可以)(brew install gedit 安装gedit文本编辑模块)
-
打开终端。
-
输入以下命令打开
.bash_profile
文件(如果你使用的是 zsh,你应该编辑.zshrc
文件):open -e .bash_profile
如果你的系统中没有安装
open
或者你更习惯使用gedit
,你可以使用以下命令:gedit .bash_profile
-
在打开的文件中,添加以下行以设置环境变量:
export ANDROID_HOME=/opt/homebrew/Caskroom/android-sdk export PATH=${PATH}:${ANDROID_HOME}/tools export PATH=${PATH}:${ANDROID_HOME}/platform-tools export PUB_HOSTED_URL=https://pub.flutter-io.cn #国内用户需要设置 export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn #国内用户需要设置 export PATH=/Users/hiro/Desktop/APP/flutter/bin:$PATH
注意:请根据你的实际 Flutter SDK 和 Android SDK 的安装路径来替换上述路径。上述路径仅用作示例。
-
保存并关闭
.bash_profile
文件。 -
在终端中,运行以下命令以使新的环境变量立即生效:
source .bash_profile
-
验证 Flutter 已成功添加到环境变量中,你可以在终端中运行:
flutter doctor
如果 Flutter 已经正确配置,你应该能看到类似的输出,包括关于你的 Flutter 和 Dart 的版本信息,以及任何可能需要解决的配置问题。
2.若使用Homebrew 的安装出现问题的解决方案(谨慎使用)
Homebrew 是一款免费和开源的软件包管理系统,专门为 macOS 操作系统(虽然也存在 Linux 和 Windows 上的版本)设计,用于自动化安装、更新和卸载软件。它简化了在 macOS 上安装各种软件的过程,特别是那些不包含在 Apple App Store 中的软件。
因为转flutter的有些组件可能要用上 Homebrew 来进行安装,但是mac下Homebrew由出错了,就可以参考这里的做法。
这是一个基础的故障排除步骤,用于解决安装 Homebrew 时出现的问题。以下是如何完全卸载并重新安装 Homebrew 的步骤:
首先,打开你的终端,然后输入以下命令来卸载 Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"
这个命令会从 Homebrew 的 GitHub 存储库下载并运行 uninstall 脚本。
一旦完成卸载,你可以通过以下命令重新安装 Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
这个命令会从 Homebrew 的 GitHub 存储库下载并运行 install 脚本,从而重新安装 Homebrew。
请确保在你的终端中精确复制和粘贴上述命令,避免任何输入错误。
3.doctor flutter 报错之[✗] Android toolchain
[✗] Android toolchain - develop for Android devices ✗ Unable to locate Android SDK. Mac终端配置报错问题解决
4.cocoapods安装失败解决
参考链接
安装完成后可通过下面命令,验证是否成功
pod --version
成功看到版本号说明,cocoapods安装成功,但是依然出现下面错误的话,可能是下面原因
[!] Xcode - develop for iOS and macOS
✗ Xcode installation is incomplete; a full installation is necessary for iOS and macOS
development.
Download at: https://developer.apple.com/xcode/download/
Or install Xcode via the App Store.
Once installed, run:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
错误信息提示 Xcode 的安装是不完整的,这可能是因为你没有安装 Xcode,或者没有将它设置为当前的命令行工具。你可以按照以下步骤来解决这个问题:
-
首先,你需要确保你已经从 Mac App Store 安装了最新版本的 Xcode。你也可以从 Apple Developer 网站下载和安装 Xcode:https://developer.apple.com/xcode/download/
-
安装 Xcode 后,你需要打开它并同意用户许可协议。这一步是很重要的,因为在你同意许可协议之前,Xcode 的命令行工具是不可用的。
-
然后,你需要将 Xcode 的命令行工具设置为当前使用的工具。你可以使用以下命令来进行设置:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
-
最后,你需要让 Xcode 运行一次首次启动的初始化过程。你可以使用以下命令来进行这个操作:
sudo xcodebuild -runFirstLaunch
完成以上步骤后,你应该可以成功地使用 Xcode 和 CocoaPods 来进行 iOS 和 macOS 开发了。你可以再次运行 flutter doctor
来检查你的环境是否已经配置正确。
还有下面错误的话
[!] Xcode - develop for iOS and macOS (Xcode 15.0.1)✗ Unable to get list of installed Simulator runtimes.
---------------------
这个问题可能是因为你的 Flutter 环境无法获取已安装的 iOS 模拟器运行时列表。你可以尝试以下步骤修复这个问题:
大概率你没有安装模拟器
-
打开 Xcode,在顶部菜单栏选择 “Window” -> “Devices and Simulators”。
-
在打开的窗口中,选择 “Simulators” 标签。
-
在左下角,点击 “+” 图标来创建一个新的模拟器。
-
在弹出的对话框中,你可以选择你想要的设备类型(如 iPhone 12)和 iOS 版本。然后给模拟器取一个名称,最后点击 “Create”。
创建完成后,你应该能在 “Devices and Simulators” 窗口的 “Simulators” 列表中看到你新创建的模拟器。
然后,你可以再次运行 flutter doctor
来看看问题是否已经解决。如果还有问题,那可能是其他的配置问题,你可能需要进一步检查你的 Flutter 和 Xcode 环境。
如果显示 Could not create pp, unknown runtime.
此错误通常发生在尝试创建模拟器时,如果选择的 iOS 运行时版本尚未在你的 Xcode 中安装。你可以按照以下步骤来解决:
打开 Xcode,在顶部菜单栏选择 “Xcode” -> “Preferences”。
在弹出的窗口中,选择 “Components” 标签。
在这里,你将看到一个列表,其中包括各种 iOS 模拟器运行时。查找你尝试创建的模拟器所对应的 iOS 版本,如果它旁边的方框为空,那意味着这个运行时尚未安装。点击这个方框来下载并安装运行时。
下载和安装完成后,你应该可以成功地创建一个新的模拟器,使用你刚刚安装的 iOS 运行时版本。
如果你仍然遇到问题,可能是因为你的系统或 Xcode 版本太旧,不支持你想要的 iOS 运行时。在这种情况下,你可以尝试更新你的 macOS 和 Xcode,或者选择一个较旧的 iOS 运行时来创建模拟器。
5. ruby的版本不对应flutter
遇到的一个问题是 flutter需要ruby的版本为2.7.4以上,而mac自带的又只有2.6,所以下面这一步在 flutter doctor
下 就是要失败,因为版本原因安装不上 cocoapods 导致的
[!] Xcode - develop for iOS and macOS (Xcode 15.0.1)✗ Unable to get list of installed Simulator runtimes.✗ 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-pluginsTo install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
1.手动安装 Ruby 3.0.6
因为用rbenv安装源失败了,这里写下该如何手动安装rbenv
比如我这里手动下载了 ruby-3.0.6.tar.gz 安装包
ruby-3.0.6.tar.gz 零积分下载
如果你在使用 rbenv
安装 Ruby 源时遇到问题,你可以考虑手动安装 Ruby。下面是在 macOS 上手动安装 Ruby 并将其链接到正确的 OpenSSL 库的步骤:
-
安装必要的工具和库
安装 Xcode 和 Command Line Tools:
xcode-select --install
检查是否安装了 Xcode 和 Command Line Tools,可以运行
xcode-select -p
和gcc --version
。 -
解压 Ruby 源代码
进入存放
ruby-3.0.6.tar.gz
的目录,执行以下命令:tar xzf ruby-3.0.6.tar.gz
这将创建一个名为
ruby-3.0.6
的目录。 -
获取 OpenSSL 的路径
执行以下命令:
brew --prefix openssl
这个命令将输出类似
/usr/local/opt/openssl
的结果。 -
编译和安装 Ruby
进入
ruby-3.0.6
目录,执行以下命令:cd ruby-3.0.6 ./configure --with-openssl-dir=/opt/homebrew/opt/openssl@3 make sudo make install
这些命令将编译并安装 Ruby。如果在编译过程中出现权限问题,可以尝试使用
sudo make
。 -
安装完成后的验证
安装完成后,运行
ruby -v
。如果还是显示的是老版本的 Ruby,运行以下命令:export PATH="/usr/local/bin:$PATH"
这是因为系统可能仍然指向旧版本的 Ruby,这可能是由于
$PATH
环境变量的设置问题。可以通过修改$PATH
的顺序来优先使用新安装的 Ruby。 -
可能的问题
如果你在运行
ruby -v
后仍然看到旧版本的 Ruby,那么可能是系统仍然指向了旧版本的 Ruby。这可能是因为$PATH
环境变量的设置问题。你可以通过查看$PATH
的内容(通过echo $PATH
命令)并修改其顺序来解决这个问题。如果你经常需要切换 Ruby 版本,或者在不同的项目中使用不同的 Ruby 版本,你可以考虑使用 Ruby 版本管理器,如
rbenv
或rvm
。
通过以上步骤,你应该能成功安装并使用 Ruby 3.0.6 版本。
如下显示你的ruby就成功了:
(base) hiro@HirodeAir ~ % echo $PATH
/usr/local/sbin:/usr/local/bin:/Users/hiro/Desktop/APP/flutter/bin:/usr/local/sbin:/usr/local/bin:/Users/hiro/mambaforge/bin:/Users/hiro/mambaforge/condabin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Applications/VMware Fusion Tech Preview.app/Contents/Public:/opt/homebrew/Caskroom/android-sdk/4333796/tools:/opt/homebrew/Caskroom/android-sdk/4333796/platform-tools
(base) hiro@HirodeAir ~ % export PATH="/usr/local/bin:$PATH"
(base) hiro@HirodeAir ~ % ruby --version
ruby 3.0.6p216 (2023-03-30 revision 23a532679b) [arm64-darwin23]
(base) hiro@HirodeAir ~ %
2.另一种安装 Ruby 的方式:使用 RVM
Ruby Version Manager (RVM) 是一种命令行工具,可以用于管理和切换 Ruby 版本。此外,它也可以用于安装 OpenSSL。
1.安装 RVM
首先,我们需要在终端中运行以下命令以安装 RVM:
\curl -sSL https://get.rvm.io | bash -s stable
安装完成后,需要关闭并重新打开终端,或者运行以下命令来使 RVM 生效:
source ~/.rvm/scripts/rvm
2.使用 RVM 安装 Ruby 和 OpenSSL
安装好 RVM 后,你可以使用 RVM 来安装所需的 Ruby 版本以及对应的 OpenSSL。运行以下命令:
rvm install 3.0.6 --with-openssl-dir=/opt/homebrew/opt/openssl@3
在安装过程中,可能会提示输入密码,这是因为 RVM 需要 sudo 权限来安装 Ruby 和 OpenSSL。
- 检查安装
安装完成后,可以使用以下命令来检查 Ruby 和 OpenSSL 是否正确安装:
ruby -v
ruby -ropenssl -e 'puts OpenSSL::OPENSSL_LIBRARY_VERSION'
第一个命令应返回刚安装的 Ruby 版本,第二个命令应返回 OpenSSL 的版本。
现在,你应该可以使用 gem 命令来安装 cocoapods 了:
gem install cocoapods
至此,通过 RVM 安装 Ruby 和 OpenSSL 的过程已经完成。
四.苹果开发者的常见问题与笔记
1.云端网页完成设备添加后创建证书图示记录
1.1设备添加(UDID添加)
参考ios : Provision Profile 添加设备 device的 udid
官网:苹果开发者设备添加页面
1.2创建证书
官网 : 苹果开发者证书创建页面
根据我的开发流程阶段选择对应的证书生成我正在开发 Flutter 应用程序,并且目的是在 iPhone 设备上进行实机测试,所以我应该选择 “iOS App Development” 类型的 Provisioning Profile。
iOS App Development:创建一个Provisioning Profile以在 iOS,iPadOS,watchOS 和 tvOS 测试设备上安装开发应用。
以下是选择此选项的原因:
设备测试:这个选项使您能够在实际的设备上进行应用测试,这对于捕获某些只能在真实设备上复现的问题是必要的。
开发阶段:在开发阶段,您通常不需要将应用分发给大量用户或提交到 App Store。“iOS App Development” 类型的
Provisioning Profile 正是为此设计的。支持 Flutter:使用 “iOS App Development” 类型的 Provisioning Profile,您可以构建并安装
Flutter 应用到 iOS 设备上进行测试和开发。而但我准备将应用提交到 App Store 时,我需要创建并使用一个 “App Store” 类型的 Provisioning
Profile。
下一步我们选择一个程序id(App ID 是一个唯一的标识符,它关联着你的应用和你的开发者账户。每个 iOS 应用都需要一个 App ID 来使用特定的服务(如推送通知、In-App Purchase等)并且在设备上安装。)
登录到 Apple Developer Portal。
在 “Certificates, Identifiers & Profiles” 部分,选择 “Identifiers”。
点击 “+” 按钮来创建一个新的 App ID。输入你的应用的 Bundle Identifier 和其他相关信息。
下载完成后使用取消自动安装,使用手动安装证书的方法进行,主要这里填写的Bundle Identifier (反向域名构成的唯一标识符,用于在 iOS 和 macOS 系统中识别应用) 是你创建证书时对应的,比如xxxxaaa.com.ppdsa.dd 就是你的 Bundle Identifier。这个标识符由两部分组成:
xxxxaaa这一部分是你的 Team ID,这是一个由 Apple 自动生成的唯一标识符,用来标识你的开发团队。
com.ppdsa.dd 这一部分是你为你的应用指定的标识符。按照通常的规则,它应该是你的公司网站的反向域名,后面跟上你的应用名。
而在Xcode中如下图你应该填写的是om.ppdsa.dd ,不要全填写进去了.
2.Xcode配置证书图示
完成后点击感叹号,看到include你的设备不为0的时候,就说明证书成功了
3.验证是否安装成功了开发证书的一个方法
根据以下步骤在 Xcode 中检查:
- 打开 Xcode
- 选择 “Xcode” 菜单 -> “Preferences”
- 在 “Preferences” 窗口中,选择 “Accounts” 选项卡
- 选中你的 Apple ID,然后点击 “Manage Certificates…”
- 在弹出的窗口中,你应该可以看到一个类型为 “iOS Development” 的证书。这个证书应该包含你的名字和一个有效的到期日期。
在钥匙串访问(Keychain Access)应用中检查:
- 打开 “钥匙串访问”(在 Finder 中,选择 “Applications” -> “Utilities” -> “Keychain Access”)
- 在 “钥匙串” 列表中,选择 “登录”,然后在 “类别” 列表中,选择 “证书”
- 在证书列表中,查找一个名字为 “iPhone Developer: Your Name (XXXXXXXXXX)” 的证书,其中 “Your Name” 是你的名字,“XXXXXXXXXX” 是你的 Team ID。这个证书应该有一个有效的到期日期,并且没有任何错误或警告。
如果你在 Xcode 和钥匙串访问(Keychain Access)应用中都能看到你的开发证书,那么你应该已经成功创建并安装了证书。
完成证书安装后对Android Studio 的设置
对于 Flutter 项目的 iOS 平台开发设置,主要是指在 Xcode 中配置项目的一些基本信息,这些信息主要包括 Bundle Identifier、版本号、开发团队等。以下是具体步骤:
-
打开项目的 iOS 配置:在你的 Flutter 项目目录中,你会看到一个名为
ios
的文件夹。在这个文件夹中,有一个名为Runner.xcworkspace
的文件。双击这个文件,会在 Xcode 中打开你的 Flutter 项目的 iOS 配置。 -
设置 Bundle Identifier:在 Xcode 中,选择 “Runner” 项目,在 “General” 选项卡中的 “Identity” 部分,你可以设置你的应用的 “Bundle Identifier”。这个标识符是你的应用在 App Store 和你的设备上的唯一标识。
3.设置开发团队:在 “General” 选项卡中的 “Signing & Capabilities” 部分,你可以选择你的开发团队。如果你已经加入了 Apple Developer Program 并且已经在 Xcode 中添加了你的 Apple ID,你应该可以在这里看到你的开发团队。选择你的开发团队,Xcode 将自动为你的应用创建并管理证书和签名。
4. 设置版本号:在 “General” 选项卡中的 “Identity” 部分,你可以设置你的应用的 “Version” 和 “Build”。每次你发布你的应用时,你都应该增加这些版本号。
- 保存并关闭 Xcode:完成以上配置后,保存你的配置(选择 “File” 菜单 -> “Save”),然后关闭 Xcode。
现在,你的 Flutter 项目应该已经完成了 iOS 平台的开发设置。你可以回到 Android Studio,然后尝试运行你的应用看看是否可以成功安装到你的 iPhone 上。
4.完成环境证书配置后的项目mac项目创建
还是参考这里面的项目配置参考
我在mac上是使用的Android Studio 进行的flutter项目的开发,下面我截一些图,可以参考一些在所以环境与证书完成后的一些设置
在连接数据线连接上硬件(苹果手机后)
可以在 Xcode下的Windows的 Device and Simulators 选项中看到连接上的硬件
在Android Studio中也可以看到下面的输出,说明程序成功的写入了选择的硬件设备中
这时如果你的程序是有页面的,就可以在硬件设备,我这里就是个苹果手机上,看到实际APP的对应画面
五.其他补充
Xcode下勾选这个地方,如果mac和你要调试的硬件在一个局域网内就可以通过WiFi进行调试链接,不用插数据线了