Mac电脑Android Studio和VS Code配置Flutter开发环境(图文超详细)

一、安装Android Studio

官网地址:

https://developer.android.google.cn/

历史版本下载地址:

https://developer.android.com/studio/archive?hl=zh-cn

二、安装Xcode

到App Store下载安装最新版本,如果MacOS更新不到13.0以上就无法安装最新的Xcode,只能去下载以前版本的Xcode。

历史版本下载地址:

https://developer.apple.com/download/all/?q=Xcode

三、安装VS Code

VS Code官网地址:

https://code.visualstudio.com

四、安装Flutter SKD

官网地址:

https://docs.flutter.dev/get-started/install/macos

注意:苹果芯片需要安装rosetta翻译环境
Flutter用于git安装和升级。我们建议安装Xcode,其中包含git,但您也可以单独安装git。

$ sudo softwareupdate --install-rosetta --agree-to-license

1.下载Flutter SDK包

下载解压后,将目录放到/Library/Developer/flutter。

2.打开终端配置环境变量

配置前,先打开 系统偏好设置->安全性与隐私  进入页面等着。因为从不受信任的源下载的SDK,安装时需要用户手动点同意。

1).执行命令 $ vim ~/.bash_profile

2).输入i (进入可编辑状态)

3).复制下面的代码粘入

export PATH=/Library/Developer/flutter/bin:$PATH  
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

4).按esc输入:wq退出

其它指令:
q 表示退出;
w 表示保存退出;
q! 表示强制退出。

5).执行命令 $ source ~/.bash_profile

6).执行命令 $ flutter -h

安装成功,提示Manage your Flutter app development。

7).执行命令 $ flutter doctor

查看是否需要安装任何依赖项才能完成设置

比如我安装时,有如下提示。

8).按照提示完善环境

报错:
cmdline-tools component is missing      Run `path/to/sdkmanager --install "cmdline-tools;latest"`      See https://developer.android.com/studio/command-line for more details.
解决:
打开Android Studio进入Preferences,安装Android SDK Command-line Tools (latest)。


报错:
✗ Android license status unknown.      Run `flutter doctor --android-licenses` to accept the SDK licenses.      See https://flutter.dev/docs/get-started/install/macos#android-setup for      more details.
解决:
执行命令 $ flutter doctor --android-licenses
需要去同意Android的一些许可

报错:
CocoaPods not installed.
解决:
安装CocoaPods,内容有点多,提出来放到了下一节。

五、安装CocoaPods

1.了解brew、rvm、ruby、gem、cocaspods之间的关系是什么样的

在 macOS 环境中,Brew、RVM、Ruby、Gem 和 CocoaPods 之间存在以下关系:

Homebrew (Brew):Homebrew 是 macOS 上的包管理器,用于安装和管理各种开源软件包。它使您能够轻松地从命令行安装、更新和卸载软件包,包括开发工具、库和其他应用程序。

RVM (Ruby Version Manager):RVM 是一个用于管理和安装多个 Ruby 版本的工具。它允许您在同一台计算机上同时安装和切换不同版本的 Ruby。RVM 还提供了一个独立的环境,以隔离不同版本的 Ruby 和它们的依赖项。

Ruby:Ruby 是一种动态、面向对象的编程语言,经常用于 Web 开发和脚本编写。它由日本开发者松本行弘(Yukihiro Matsumoto)创建,并且具有简洁、优雅的语法。RVM 用于安装和管理不同版本的 Ruby。

Gem:Gem 是 Ruby 的软件包管理系统。它用于安装、管理和分发 Ruby 应用程序和库。Gem 包含可重用的代码库,让开发人员能够轻松地共享和使用 Ruby 的扩展功能。通过 Gem,您可以安装和管理与 Ruby 相关的软件包和依赖项。

CocoaPods:CocoaPods 是一个用于管理 iOS 和 macOS 项目中的第三方库依赖项的工具。它使用 Ruby 编写,并且依赖于 Gem 来安装和管理自己的软件包。CocoaPods 允许您在 Xcode 项目中轻松地集成和更新各种开源库。

综上所述,Brew 是用于管理 macOS 上的软件包的包管理器,RVM 是用于管理和安装多个 Ruby 版本的工具,Ruby 是编程语言本身,Gem 是 Ruby 的软件包管理系统,而 CocoaPods 是用于管理 iOS 和 macOS 项目中的第三方库依赖项的工具,它使用 Gem 来安装和管理自己的软件包。Brew、RVM、Ruby、Gem 和 CocoaPods 提供了一套工具链,使您能够更方便地安装、管理和使用 Ruby 和相关的软件包和依赖项。

2.检查并安装brew

验证 Homebrew 是否安装

$ brew doctor

执行以下指令,下载 Homebrew 的安装脚本并自动执行安装过程。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

3.检查并安装rvm

检查rvm是否安装

$ rvm -v

检查提示rvm: command not found时,就表示rvm需要安装。

先用下面命令安装

$ curl -L https://get.rvm.io | bash -s stable

上一步执行完成后再执行

$ source ~/.rvm/scripts/rvm

再次查询rvm的安装情况

$ rvm -v

4.检查并安装ruby

先检查ruby的信息,安装cocaPods,ruby环境不得低于2.2.2,否则会报错。

$ ruby -v

最好更新到新版本,可以去官网查询ruby最新版本https://www.ruby-lang.org/zh_cn/downloads/

安装最新稳定版本ruby

$ rvm install 3.2.2

然后输入指令查看是否安装成功

$ rvm list

5.检查并更新gem ruby

检查gem ruby版本,需要输入一次密码。

$ sudo gem -v

更新gem ruby

最新版本,可以去网站查询一下https://rubygems.org/pages/download

$ gem update --system

6.检查并更新ruby源

检查ruby源

$ gem sources -l

如果展示https://rubygems.org/,则移除此ruby源。

$ gem sources --add https://gems.ruby-china.com/

7.安装CocoaPods 

cocoapods官网地址:

https://cocoapods.org/

安装cocoapods指令,sudo表示管理员指令,需要输入密码。

$ sudo gem install -n /usr/local/bin cocoapods

或者

$ sudo gem install -n /usr/local/bin cocoapods  --pre

安装后,检查安装情况。

$ pod --version

8.CocoaPods使用

先创建一个iOS测试工程GaminTestDemo

然后打开终端,cd到项目。

$ cd /Users/gamin/Desktop/GaminTestDemo

然后再初始化pod,执行成功后,目录中会多出一个Podfile文件。

$ pod init

打开Podfile文件,添加依赖库AFNetworking。

最后,在终端执行指令安装依赖库。

$ pod install

安装成功后,项目目录中会多出Pods、xxx.xcworkspace、Podfile.lock。之后打开项目,需要用.xcworkspace文件去打开。

9.重新检查flutter环境

$ flutter doctor

提示CocoaPods安装了但不起作用

这是Ruby的版本和CocoaPods的版本不对应产生的问题

终端执行命令查看,果然当前使用了旧版本的ruby。

$ source ~/.rvm/scripts/rvm

$ rvm list

切换ruby版本

$ rvm use ruby-3.2.2

移除Ruby版本

$ rvm uninstall ruby-2.6.6

移除旧版本我这里会报错,就不移除了,因为切换ruby后上面的问题就修复了。

六、创建Flutter工程

1.用VS Code创建

1).安装Dart、Flutter和Code Runner插件

2).创建Flutter工程

Command+Shift+P打开全局搜索,搜索flutter,选择Flutter:New Project回车。

选择Application回车

选择将项目放在什么位置

输入项目名称创建项目,注意规范了项目名称只能输入小写字母和下划线。

2.用Android Studio创建

1).安装Flutter、Dart插件

2).创建Flutter工程

打开Android Studio,选择Flutter语言,确认Flutter SDK 路径后进行下一步。

项目名称规范未小写字母加下划线,这一步比用VS Code创建Flutter应用多了一些配置项。

七、运行Flutter项目

运行Flutter项目,在Android Studio和VS Code没什么区别,下面用VS Code的面板简单介绍一下。

1.运行到macOS

面板右上角,Run -> Start Debugging,直接运行到macOS。

2.运行到Chrome

3.运行到iOS模拟器

终端输入指令打开模拟器,或者在设备管理列表选择启动,当然手动打开模拟器APP都行。

$ open -a Simulator

cd到flutter项目根目录,使用flutter run命令运行项目。也可以Run -> Start Debugging运行项目。

$ flutter run

4.运行到Android模拟器

查看设备列表,其中Nexus和Pixel就是Studio中安装的模拟器。刚打开VS Code时,这两个模拟器状态都是“Offline”,选择后模拟器就开始启动。模拟器状态会变成“Availabel”,就可以直接在设备上运行了。

5.运行到夜神模拟器

1).安装夜神模拟器for mac

应用程序中,右键夜神模拟器,显示包内容。找到Contents中的MacOS目录,然后终端cd到目录,执行如下命令连接模拟器。

$ adb connect 127.0.0.1:62001

发现会提示-bash: adb: command not found,那是因为我们还没有配置过Android环境变量。

2).配置Android环境变量

I.打开终端执行如下命令,创建.bash_profile文件,若已经创建过,则无不会再次创建。

$ touch .bash_profile

II.打开文件进行编辑

$ open -e .bash_profile

将下面的内容粘贴到.bash_profile文件的后面

export ANDROID_HOME=自己sdk路径从Android Studio获取
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools

III.终端输入如下命令更新

$ source .bash_profile

IV.重新cd /Applications/NoxAppPlayer.app/Contents/MacOS验证adb是否配置完成

V.电脑重启或者退出终端后,可能会再次出现adb: command not found,重新执行$ source .bash_profile命令,adb又能使用。

$ source .bash_profile

3).运行效果

Android环境变量配置完成后,重启夜神模拟器,我们能在设备列表中看到它。选择模拟器,运行效果如下。

6.运行到Android真机

手机打开USB调试连接计算机

  • 打开“设置”找到“关于手机”进入,连续点击版本号,直到提示“您已经进入开发者模式”。

  • 回到“设置”找到“系统与更新”进入,再进入“开发者选项”,打开USB调试。

  • 用数据线连接手机和电脑,在弹出框中选择“文件传输”,再允许这台计算机进行调试。

然后在VS Code设备管理中选择对应手机直接运行就可以了。

注意:不同厂商流程会有区别,介绍这个流程打不开时,可以去网上查询一下。强调一下,不要使用三无数据线,这样是不会再手机上弹窗的。

7.运行到iPhone真机

1).手机打开开发者模式

  • 进入 设置 -> 通用 -> 关于本机 页面,连续点击版本号。会弹窗,要求输入锁屏密码。

  • 上面完成验证后,设置中会出现开发者选项。

  • 进入开发者选项,开启开发者模式。

如果您的 iPhone 版本号无法多次点击以启用开发者模式,这可能是因为您的 iPhone 型号或 iOS 版本不支持通过多次点击版本号来激活开发者选项。在某些情况下,特定的 iPhone 型号可能需要使用不同的方法来启用开发者模式。以下是一些备选方法:

使用搜索功能:在设置应用程序中使用搜索功能来查找开发者选项。在主屏幕上向下滑动以展开搜索栏,然后输入 "开发者选项" 或类似的关键词进行搜索。这可能会直接显示开发者选项菜单或相关设置。

使用配置文件:有时,您可以通过安装特定的配置文件来启用开发者模式。这些配置文件可以通过开发者网站或第三方开发者工具提供。在安装配置文件后,您可以在设置中找到开发者选项。

使用 Xcode:如果您具有 Mac 计算机和 Xcode 开发环境,您可以通过连接 iPhone 到 Mac,并在 Xcode 中进行相应设置来启用开发者模式。在 Xcode 中,选择您的 iPhone 设备,然后在设置中进行所需的配置。

2).此时直接运行会报错

数据线连接iPhone手机,VS Code设备管理中会出现iPhone设备,现在直接运行项目到iPhone会报错,因为当前使用的包名“com.example.flutterDemo”还没配置。

3).到开发者网站注册App ID(Bundle ID/包名)

到苹果开发者网站,登录开发者账号。然后进入“标识符(identifiers)”页面,点击添加,注册一个包名(Bundle ID)。 上一步提示的“com.example.flutterDemo”包名已经被其他开发者占用了,这里我就随便创建一个“com.example.gaminFlutterDemo”,用来演示。

没有开开发者账号,就需要去申请,注册个人类型开发者账号,注册公司类型开发者账号。

注意:包名创建后是可以删除的,但有一个前提,就是不能手贱提前将IPA上传到appstoreconnect。

比如,为其它公司开发APP时,若对方开发者账号迟迟不下来,而很多功能又是基于包名,那么可以先将包名注册在自己公司的开发者账号上,不至于卡住开发和测试。等对方的开发账号下来,我们再将包名删掉,重新添加到对方的账号上面去,就可以顺利完成过度。如果,用某个Bundle ID将IPA上传到了appstoreconnect,那么这个Bundle ID就无法从这个账号上删除了。

确定包名后,我们在项目中全局将com.example.flutterDemo替换为com.example.gaminFlutterDemo。这里不修改也没事,这里不改的话就下一步去Xcode中修改,都一样。

开发者网站,还可处理一些其他配置。比如添加测试手机、配置签名等,这里就不详细说在网站上如何操作了,推荐到时打开Xcode时自动注册设备和自动管理签名。


4).使用Xcode打开Flutter工程iOS目录下的Runner.xcworkspace文件

打开项目后,按步骤进入Signing,我们会发现红色的报错。

解决上面的问题,我们先要进入Xcode -> Preferences -> Accounts 添加开发者账号。

然后回到Siging,先将“Automatically manage signing”开关打开,然后将Team对应的开发者账号切换为和com.example.gaminFlutterDemo对应的账号。这样,问题就解决了,可以运行项目了。

新iPhone第一次做真机调试,最好先在Xcode运行一次,以便设备信任和自动注册设备到开发者账号上。不然的话,就去开发者网站的devices目录,添加设备ID。

先在Xcode选择真机,然后点击运行,真机运行效果如下。

5).真机运行效果

关闭Xcode,我们回到VS Code。iPhone用数据线连接Mac后,我们在VS Code选择iPhone直接运行。

运行时,会有个关于“iproxy”的弹窗,会导致运行卡主。我们需要进入 系统偏好设置 -> 安全性与隐私 选择允许。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

理解android AIDL

理解Android AIDL 在研究了 Android Frameworks 中进程间通信(IPC)相关的一些程序后,了解到 Android 系统中进程间通信的机制绝大部分就是 Binder,主要表现在系统服务的调用,app进程间功能调用等。而 Android 上实现 …

【c++|opencv】二、灰度变换和空间滤波---1.灰度变换、对数变换、伽马变换

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 灰度变换、对数变换、伽马变换 1. 灰度变换 #include <iostream> #include <opencv2/opencv.hpp>using namespace std; using namespace c…

redis原理 主从同步和哨兵集群

主从库如何实现数据一致 我们总说的 Redis 具有高可靠性&#xff0c;又是什么意思呢&#xff1f;其实&#xff0c;这里有两层含义&#xff1a;一是数据尽量少丢失&#xff0c;二是服务尽量少中断。AOF 和 RDB 保证了前者&#xff0c;而对于后者&#xff0c;Redis 的做法就是增…

Linux gzip命令:压缩文件或目录

gzip 是 Linux 系统中经常用来对文件进行压缩和解压缩的命令&#xff0c;通过此命令压缩得到的新文件&#xff0c;其扩展名通常标记为“.gz”。 再强调一下&#xff0c;gzip 命令只能用来压缩文件&#xff0c;不能压缩目录&#xff0c;即便指定了目录&#xff0c;也只能压缩目录…

软考系统架构师知识点集锦九:数据库系统

一、考情分析 二、考点精讲 2.1数据库概述 2.1.1数据库模式 (1)三级模式:外模式对应视图&#xff0c;模式(也称为概念模式)对应数据库表&#xff0c;内模式对应物理文件。(2)两层映像:外模式-模式映像&#xff0c;模式-内模式映像;两层映像可以保证数据库中的数据具有较高的…

【算法-数组2】有序数组的平方 和 长度最小的子数组

今天&#xff0c;带来数组相关算法的讲解。文中不足错漏之处望请斧正&#xff01; 理论基础点这里 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输…

手机app爬虫配置(模拟机)

近期在做某个项目,涉及到需要对手机app的进行数据爬取。 下面将讲述具体配置步骤 1、安装手机模拟器 在百度上搜索手机模拟器就可以啦,这里以夜神模拟器夜神安卓模拟器-安卓模拟器电脑版下载_安卓手游模拟器_手机模拟器_官网为例子。 下载后,直接点击安装即可。 2、安装…

Mac怎么删除文件和软件?苹果电脑删除第三方软件方法

Mac删除程序这个话题为什么一直重复说或者太多人讨论呢&#xff1f;因为如果操作不当&#xff0c;可能会导致某些不好的影响。因为Mac电脑如果有太多无用的应用程序&#xff0c;很有可能会拖垮Mac系统的运行速度。或者如果因为删除不干净&#xff0c;导致残留文件积累在Mac电脑…

软考系统架构师知识点集锦十:计算机网络、数学与经济管理、知识产权与标准化

一、计算机网络 1.1、考情分析 2.1 TCP/IP协议簇 2.1.1常见协议及功能 网际层是整个TCP/IP体系结构的关键部分,其功能是使主机可以把分组发往任何网络并使分组独立地传向目标。 POP3: 110 端口&#xff0c;邮件收取SMTP: 25 端口&#xff0c;邮件发送FTP: 20数据端口/21控制…

最优值函数

一、最优状态值函数 解决强化学习任务大致上意味着找到一种政策&#xff0c;能够在长期内实现很多奖励。对于有限MDPs&#xff0c;我们可以精确地定义一种最优政策&#xff0c;其定义如下。值函数定义了政策的一种部分排序。如果一个政策的预期回报大于或等于另一个政策π0在所…

C++ 动态规划 DP教程 (一)思考过程(*/ω\*)

动态规划是一种思维方法&#xff0c;大家首先要做的就是接受这种思维方法&#xff0c;认同他&#xff0c;然后再去运用它解决新问题。 动态规划是用递推的思路去解决问题。 首先确定问题做一件什么事情&#xff1f; 对这件事情分步完成&#xff0c;分成很多步。 如果我们把整件…

ubuntu下英伟达显卡驱动及cuda安装

一、查看显卡需要安装的cuda版本及需要的驱动版本 进入官网查看&#xff1a; CUDA 12.3 Release Notes 比如需要装cuda12.2GA需要驱动版本至少为535.54.03 二、下载显卡驱动 2.1 进入官网下载界面&#xff1a; Official Drivers | NVIDIA&#xff0c;点击Beta and older dr…

redis6.0源码分析:跳表skiplist

文章目录 前言什么是跳表跳表&#xff08;redis实现&#xff09;的空间复杂度相关定义 跳表&#xff08;redis实现&#xff09;相关操作创建跳表插入节点查找节点删除节点 前言 太长不看版 跳跃表是有序集合zset的底层实现之一&#xff0c; 除此之外它在 Redis 中没有其他应用。…

音视频技术开发周刊 | 317

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 MIT惊人再证大语言模型是世界模型&#xff01;LLM能分清真理和谎言&#xff0c;还能被人类洗脑 MIT等学者的「世界模型」第二弹来了&#xff01;这次&#xff0c;他们证明…

谁知道腾讯云轻量服务器“月流量”是什么意思?

腾讯云轻量服务器月流量什么意思&#xff1f;月流量是指轻量服务器限制每月流量的意思&#xff0c;不能肆无忌惮地使用公网&#xff0c;流量超额需要另外支付流量费&#xff0c;上海/广州/北京等地域的轻量服务器月流量不够用超额部分按照0.8元/GB的价格支付流量费。阿腾云aten…

【SpringMVC篇】讲解RESTful相关知识

&#x1f38a;专栏【SpringMVC】 &#x1f354;喜欢的诗句&#xff1a;天行健&#xff0c;君子以自强不息。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f384;REST简介&#x1f33a;RESTful入门案例⭐案例一⭐…

【Java数据结构重点知识】第一节:认识数据结构与算法、集合框架

一&#xff1a;数据结构与算法 1.数据结构 数据结构是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的集合 2.算法 算法就是定义良好的计算过程。他取一个或一组的值为输入&#xff0c;并产生一个或一组作为输出。简单来说就是一系列的…

前端开发必备技能!用简单CSS代码绘制三角形,提升用户体验

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、前…

AdaBins:使用自适应bins进行深度估计

论文&#xff1a;https://arxiv.org/abs/2011.14141 代码&#xff1a;https://github.com/open-mmlab/mmsegmentation/tree/main/projects/Adabins 0、摘要 本文主要解决了从单个RGB输入图像估计高质量密集深度图的问题。我们从一个baseline的encoder-decoder CNN结构出发&…

cocos tilemap的setTileGIDAt方法不实时更新

需要取消勾选 Enable Culling。同时代码添加&#xff1a;markForUpdateRenderData函数。 floor.setTileGIDAt(102427,newP.x,newP.y,0); //中心 floor.markForUpdateRenderData(); 具体问题参考官网说明&#xff1a; Cocos Creator 3.2 手册 - 项目设置