当前位置: 首页 > news >正文

2023.11.25更新关于mac开发APP(flutter)的笔记与整理(实机开发一)

我自己写的笔记很杂,下面的笔记是我在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. 开发工具和硬件需求

进行实体开发,你需要有以下几个工具和础件:

  1. 苹果开发者账户:你需要一个苹果开发者账户才能进行实体开发。你可以在苹果开发者网站注册一个账户。注意,获取开发者账户可能需要付费。
  2. 开发证书:你需要从苹果开发者网站获取一个开发证书。这个证书将被用来签署你的应用,表明这个应用是由你开发的。
  3. 实体设备:当然了,你需要一个实体设备来进行开发和测试。你需要在苹果开发者网站注册你的设备。

2.获取开发证书和注册设备

  1. 登录苹果开发者网站:使用你的苹果开发者账户登录苹果开发者网站。
  2. 获取开发证书:在开发者网站上,你可以申请一个开发证书。你需要下载这个证书并安装到你的 Mac 上。这个证书将在你进行开发和调试时用来签署你的应用。
  3. 注册设备:你需要在开发者网站上注册你的实体设备。你需要提供设备的 UDID,这是一个唯一的设备识别码。

二.亲测参考可用的资料链接

1.Mac下Flutter环境安装参考

主要就参考这个配置【Flutter】Flutter安装和配置超详细(mac)

安装失败adb参考Mac安装adb环境

adb 是 Android Debug Bridge 的缩写,它是一个命令行工具,允许你与正在运行的 Android 设备或模拟器实例进行通信。你可以使用 adb 来安装和调试 Android 应用程序,以及执行各种设备和应用管理任务。

下面选择性参考,如果你的doctor flutter 检测发现还差哪些就补哪些

  1. 安装 Flutter SDK:你可以从官方网站下载 Flutter SDK。解压并将 Flutter 文件夹放在你的希望的位置。然后,将 Flutter/bin 目录添加到你的环境变量中。
  2. 安装 Dart SDK:Dart SDK 已经包含在 Flutter SDK 中,所以你不需要独立安装。
  3. 安装 Xcode:你可以从 App Store 下载安装 Xcode。Xcode 包含了开发 iOS 应用所需的软件和工具集。
  4. 安装 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教程

  1. 苹果开发权限申请:
    你需要访问Apple Developer Portal进行申请。完成申请付款后,你还会收到邮件用于上传身份证等的验证审核。

  2. 添加设备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文本编辑模块)

  1. 打开终端。

  2. 输入以下命令打开 .bash_profile 文件(如果你使用的是 zsh,你应该编辑 .zshrc 文件):

    open -e .bash_profile
    

    如果你的系统中没有安装 open 或者你更习惯使用 gedit,你可以使用以下命令:

    gedit .bash_profile
    
  3. 在打开的文件中,添加以下行以设置环境变量:

    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 的安装路径来替换上述路径。上述路径仅用作示例。

  4. 保存并关闭 .bash_profile 文件。

  5. 在终端中,运行以下命令以使新的环境变量立即生效:

    source .bash_profile
    
  6. 验证 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,或者没有将它设置为当前的命令行工具。你可以按照以下步骤来解决这个问题:

  1. 首先,你需要确保你已经从 Mac App Store 安装了最新版本的 Xcode。你也可以从 Apple Developer 网站下载和安装 Xcode:https://developer.apple.com/xcode/download/

  2. 安装 Xcode 后,你需要打开它并同意用户许可协议。这一步是很重要的,因为在你同意许可协议之前,Xcode 的命令行工具是不可用的。

  3. 然后,你需要将 Xcode 的命令行工具设置为当前使用的工具。你可以使用以下命令来进行设置:

    sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
    
  4. 最后,你需要让 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 模拟器运行时列表。你可以尝试以下步骤修复这个问题:
大概率你没有安装模拟器

  1. 打开 Xcode,在顶部菜单栏选择 “Window” -> “Devices and Simulators”。

  2. 在打开的窗口中,选择 “Simulators” 标签。

  3. 在左下角,点击 “+” 图标来创建一个新的模拟器。

  4. 在弹出的对话框中,你可以选择你想要的设备类型(如 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 库的步骤:

  1. 安装必要的工具和库

    安装 Xcode 和 Command Line Tools:

    xcode-select --install
    

    检查是否安装了 Xcode 和 Command Line Tools,可以运行 xcode-select -pgcc --version

  2. 解压 Ruby 源代码

    进入存放 ruby-3.0.6.tar.gz 的目录,执行以下命令:

    tar xzf ruby-3.0.6.tar.gz
    

    这将创建一个名为 ruby-3.0.6 的目录。

  3. 获取 OpenSSL 的路径

    执行以下命令:

    brew --prefix openssl
    

    这个命令将输出类似 /usr/local/opt/openssl 的结果。

  4. 编译和安装 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

  5. 安装完成后的验证

    安装完成后,运行 ruby -v。如果还是显示的是老版本的 Ruby,运行以下命令:

    export PATH="/usr/local/bin:$PATH"
    

    这是因为系统可能仍然指向旧版本的 Ruby,这可能是由于 $PATH 环境变量的设置问题。可以通过修改 $PATH 的顺序来优先使用新安装的 Ruby。

  6. 可能的问题

    如果你在运行 ruby -v 后仍然看到旧版本的 Ruby,那么可能是系统仍然指向了旧版本的 Ruby。这可能是因为 $PATH 环境变量的设置问题。你可以通过查看 $PATH 的内容(通过 echo $PATH 命令)并修改其顺序来解决这个问题。

    如果你经常需要切换 Ruby 版本,或者在不同的项目中使用不同的 Ruby 版本,你可以考虑使用 Ruby 版本管理器,如 rbenvrvm

通过以上步骤,你应该能成功安装并使用 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。

  1. 检查安装

安装完成后,可以使用以下命令来检查 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 中检查:

  1. 打开 Xcode
  2. 选择 “Xcode” 菜单 -> “Preferences”
  3. 在 “Preferences” 窗口中,选择 “Accounts” 选项卡
  4. 选中你的 Apple ID,然后点击 “Manage Certificates…”
  5. 在弹出的窗口中,你应该可以看到一个类型为 “iOS Development” 的证书。这个证书应该包含你的名字和一个有效的到期日期。

在钥匙串访问(Keychain Access)应用中检查:

  1. 打开 “钥匙串访问”(在 Finder 中,选择 “Applications” -> “Utilities” -> “Keychain Access”)
  2. 在 “钥匙串” 列表中,选择 “登录”,然后在 “类别” 列表中,选择 “证书”
  3. 在证书列表中,查找一个名字为 “iPhone Developer: Your Name (XXXXXXXXXX)” 的证书,其中 “Your Name” 是你的名字,“XXXXXXXXXX” 是你的 Team ID。这个证书应该有一个有效的到期日期,并且没有任何错误或警告。

如果你在 Xcode 和钥匙串访问(Keychain Access)应用中都能看到你的开发证书,那么你应该已经成功创建并安装了证书。

完成证书安装后对Android Studio 的设置
对于 Flutter 项目的 iOS 平台开发设置,主要是指在 Xcode 中配置项目的一些基本信息,这些信息主要包括 Bundle Identifier、版本号、开发团队等。以下是具体步骤:

  1. 打开项目的 iOS 配置:在你的 Flutter 项目目录中,你会看到一个名为 ios 的文件夹。在这个文件夹中,有一个名为 Runner.xcworkspace 的文件。双击这个文件,会在 Xcode 中打开你的 Flutter 项目的 iOS 配置。在这里插入图片描述

  2. 设置 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”。每次你发布你的应用时,你都应该增加这些版本号。

  1. 保存并关闭 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进行调试链接,不用插数据线了

在这里插入图片描述

相关文章:

2023.11.25更新关于mac开发APP(flutter)的笔记与整理(实机开发一)

我自己写的笔记很杂,下面的笔记是我在chatgpt4的帮助下完成的,希望可以帮到正在踩坑mac开发APP(flutter)的小伙伴 目标:通过MAC电脑使用flutter框架开发一款适用于苹果手机的一个APP应用 本博客的阅读顺序是&#xf…...

万宾科技可燃气体监测仪的功能有哪些?

随着城市人口的持续增长和智慧城市不断发展,燃气作为一种重要的能源供应方式,已经广泛地应用于居民生活和工业生产的各个领域。然而燃气泄漏和安全事故的风险也随之增加,对城市的安全和社会的稳定构成了潜在的威胁。我国燃气管道安全事故的频…...

Binlog vs. Redo Log:数据库日志的较劲【高级】

🎏:你只管努力,剩下的交给时间 🏠 :小破站 Binlog vs. Redo Log:数据库日志的较劲【高级】 前言第一:事务的生命周期事务的生命周期Binlog和Redo Log记录事务的一致性和持久性Binlog的记录过程R…...

移动机器人路径规划(二)--- 图搜索基础,Dijkstra,A*,JPS

目录 1 图搜索基础 1.1 机器人规划的配置空间 Configuration Space 1.2 图搜索算法的基本概念 1.3 启发式的搜索算法 Heuristic search 2 A* Dijkstra算法 2.1 Dijkstra算法 2.2 A*&&Weighted A*算法 2.3 A* 算法的工程实践中的应用 3 JPS 1 图搜索基础 1.1…...

消息中间件——RabbitMQ(四)命令行与管控台的基本操作!

前言 在前面的文章中我们介绍过RabbitMQ的搭建:RabbitMQ的安装过以及各大主流消息中间件的对比:,本章就主要来介绍下我们之前安装的管控台是如何使用以及如何通过命令行进行操作。 1. 命令行操作 1.1 基础服务的命令操作 rabbitmqctl sto…...

性能压测工具:wrk

一般我们压测的时候,需要了解衡量系统性能的一些参数指标,比如。 1、性能指标简介 1.1 延迟 简单易懂。green:一般指响应时间 95线:P95。平均100%的请求中95%已经响应的时间 99线:P99。平均100%的请求中99%已经响应的时间 平…...

[Matlab有限元分析] 2.杆单元有限元分析

1. 一维杆单元有限元分析程序 一维刚单元的局部坐标系(单元坐标系)与全局坐标系相同。 1.1 线性杆单元 如图所示是一个杆单元,由两个节点i和j,局部坐标系的X轴沿着杆的方向,由i节点指向j节点,每个节点有…...

透过对话聊天聊网络tcp三次握手四次挥手

序 说起来网络,就让我想起的就是一张图。我在网上可以为所欲为,反正你又不能顺着网线来打我。接下来我们来详细说一下网络到底是怎么连接的。 TCP三次打招呼 首先我会用男女生之间的聊天方式,来举一个例子。 从tcp三次握手来说,…...

项目管理套路:看这一篇绝对够用❤️

写论文必不可少的,就是创建代码并进行实验。好的项目管理可以让实验进行得更加顺利。本篇博客以一次项目实践为例,介绍项目管理的方法,以及可能遇到的问题,并提供一些可行的解决方案。 目录 项目管理工具开始第一步版本管理十分关…...

华为-算法---测试开发工程师----摘要牛客网

Java面试题---摘要牛客网-CSDN博客package extendNiuKeWang;import java.util.Scanner;public class GoodHuaWei {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int money = sc.nextInt();System.out.println("n值总金额:"+money)…...

python环境搭建-yolo代码跑通-呕心沥血制作(告别报错no module named torch)

安装软件 安装过的可以查看有没有添加环境变量 好的! 我们发车! 如果你想方便快捷的跑通大型项目,那么必须安装以下两个软件: 1.pycharm2.anaconda对应作用: pycharm:专门用来跑通python项目的软件,相当于一个编辑器,可以debug调试,可以接受远程链接调试!anaconda:专…...

Cisco Packet Tracer配置命令——路由器篇

路由基础 路由器用于互联两个或多个网络,具有两项功能:为要转发的数据包选择最佳路径以及将数据包交换到正确的端口,概括为路由选择和分组转发。 路由选择 路由选择就是路由器根据目的IP地址的网络地址部分,通过路由选择算法确…...

setContentsMargins(QMargins()) 是 QWidget 类的成员函数,用于设置小部件的内容边距(Contents Margins)

setContentsMargins(QMargins()) 是 QWidget 类的成员函数,用于设置小部件的内容边距(Contents Margins)。 在 Qt 中,内容边距指的是小部件内部内容与小部件边界之间的空白区域。通过设置内容边距,可以控制和调整小部…...

Redis key 过期监听实现

1.技术背景,想知道 redis 设置了TTL时间的key 过期,且有后续的业务处理的场景可以使用。 bug点: 使用redis 缓存失效监听会有一定的延迟, 过期事件是在redis服务器删除键的时候生成的,而不是在理论上生存时间到达0值得…...

Gee教程2.上下文Context

先来看看Gin框架的简单例子 func main() {engine : gin.Default()engine.GET("/", func(c *gin.Context) {c.String(http.StatusOK, "hello World!")})//监听并启动服务,默认 http://localhost:8080/engine.Run() }//我们自己写的 func main()…...

【从浅识到熟知Linux】基本指定之cat、more和less

🎈归属专栏:从浅学到熟知Linux 🚗个人主页:Jammingpro 🐟每日一句:写完这篇我要去吃晚饭啦!! 文章前言:本文介绍cat、more和less指令三种查看文件的用法并给出示例和截图…...

2018年7月24日 Go生态洞察:Go Cloud实现便携式云编程

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...

storyBook常见踩坑报错 和 解决

用StoryBook官网的代码&#xff0c;但报错&#xff0c;Unexpected token’<’ 在js文件中// Button.stories.js|jsx import { Button } from ‘./Button’; export default { component: Button, }; /* *&#x1f447; Render functions are a framework specific featur…...

python 笔记 根据用户轨迹+基站位置,估计基站轨迹+RSRP

1 问题描述 已知用户实际的轨迹&#xff0c;和基站的位置&#xff0c;能不能得到用户所连接的基站&#xff0c;以及基站的信号强度RSRP&#xff1f; 1.1 几个假设 这里我们做几个假设&#xff1a; 每个用户有80%的概率连接最近的基站&#xff0c;有20%的概率选择其他的基站连…...

RocketMQ 安装部署及应用场景记录

文章目录 前言一、RocketMQ简介1.1 整体架构 二、RocketMQ安装部署2.1 RocketMQ 下载2.2 修改 JVM 参数2.3 启动 NameServer 和 Broker2.4 验证发送和接受消息2.5 停止 NameServer 和 Broker2.6 配置全局环境 三、RocketMQ应用场景3.1 异步处理3.2 应用解耦3.3 流量削峰 前言 …...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...