MacBook M1 Flutter环境搭建的实现步骤

 更新时间:2021年8月13日 16:00  点击:1606

最近入手了Apple M1,MacBook Air,由于之前未使用苹果系列产品,并且Flutter官方和各项配套的软件环境也还没有成熟,导致搭建环境时碰到了不少坑,这里总结记录一波,来看文档的同学,有不懂的地方直接发评论或者消息就好

一、基础环境搭建

 git:

我是装完homebrew,git就装好了,homebrew的安装方法按照这个来的:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

但是后面发现这个安装方法会有一些问题,不过不影响我们使用Flutter,不放心的同学可以去找其他方法安装git 

Flutter SDK:

国内的网络环境下,先配置两个环境变量,最好是~/.zshrc和~/.bash_profile两个文件都配上,配完source一下

export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

下载安装直接按照官方文档来:https://flutter.cn/docs/get-started/install/macos

执行命令 flutter precache 或者 flutter doctor时会报错,因为没有在命令行执行安装rosetta的命令,详细的错误信息可以去下面的github地址查看

还少了一步操作,我第一天的晚上就卡在这儿了,最后去github提了issue,得到了一位老哥的提点

https://github.com/flutter/flutter/issues/74511#issue-792217747

终端执行命令

/usr/sbin/softwareupdate --install-rosetta --agree-to-license

随后再执行flutter命令正常,继续按着官方的安装文档走,环境变量一定要配,不然以后在终端无法直接使用flutter命令

CocoaPods:

Flutter官方文档给出的安装方式是命令行运行命令

sudo gem install cocoapods

但是这样后期跑带插件的ios应用,需要用到Cocoapods时就会报错

### Error
 
LoadError - dlsym(0x7ff8aa0382f0, Init_ffi_c): symbol not found - /Library/Ruby/Gems/2.6.0/gems/ffi-1.13.1/lib/ffi_c.bundle
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/ffi-1.13.1/lib/ffi.rb:6:in `rescue in <top (required)>'
/Library/Ruby/Gems/2.6.0/gems/ffi-1.13.1/lib/ffi.rb:3:in `<top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/ethon-0.12.0/lib/ethon.rb:2:in `<top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/typhoeus-1.4.0/lib/typhoeus.rb:2:in `<top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/sources_manager.rb:74:in `cdn_url?'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/sources_manager.rb:36:in `create_source_with_url'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/sources_manager.rb:21:in `find_or_create_source_with_url'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:178:in `block in sources'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:177:in `map'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:177:in `sources'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:1073:in `block in resolve_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/user_interface.rb:64:in `section'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:1072:in `resolve_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:124:in `analyze'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:414:in `analyze'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:239:in `block in resolve_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/user_interface.rb:64:in `section'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:238:in `resolve_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:160:in `install!'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/command/install.rb:52:in `run'
/Library/Ruby/Gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/command.rb:52:in `run'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/bin/pod:55:in `<top (required)>'
/usr/local/bin/pod:23:in `load'
/usr/local/bin/pod:23:in `<main>'
――― TEMPLATE END ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
[!] Oh no, an error occurred.
Search for existing GitHub issues similar to yours:
https://github.com/CocoaPods/CocoaPods/search?q=dlsym%280x7ff8aa0382f0%2C+Init_ffi_c%29%3A+symbol+not+found+-+%2FLibrary%2FRuby%2FGems%2F2.6.0%2Fgems%2Fffi-1.13.1%2Flib%2Fffi_c.bundle&type=Issues
If none exists, create a ticket, with the template displayed above, on:
https://github.com/CocoaPods/CocoaPods/issues/new
Be sure to first read the contributing guide for details on how to properly submit a ticket:
https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md
Don't forget to anonymize any private data!
 
Looking for related issues on cocoapods/cocoapods...
Found no similar issues. To create a new issue, please visit:
https://github.com/cocoapods/cocoapods/issues/new

需要使用 Rosetta 方式运行终端执行命令才行

打开 访达 -> 应用程序 -> 实用工具 -> 终端 -> 右键 -> 显示简介 -> 选中使用 Rosetta 打开

然后重新启动终端,执行

sudo gem install cocoapods
sudo gem install ffi

二、安装IDE

我安装了IDEA,Xcode和AndroidStudio

IDEA:

个人习惯使用IDEA做开发,社区版即可,而且已经对M1版本做了适配(题外话,mac体验果然好,打开IDEA的速度简直起飞)

下载地址:https://www.jetbrains.com/idea/download/

安装这里说个笑话,因为没用过mac,安装都不会,后面才知道安装是点击安装文件之后在出现的界面里把程序拖到Applications里😭

使用IDEA开发Flutter需要安装Dart和Flutter插件

Xcode:

ios开发必备(即使你不用ta来写代码),我安装只是让ta用来配置各项环境,省心(工具界的工具人?),装完一定记得要运行一次

官方下载地址:appstore搜索安装即可,比较大,时间会长一点

安装完之后运行命令,做IOS开发的相关设置

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
sudo xcodebuild -license

AndroidStudio:

官方下载地址:https://redirector.gvt1.com/edgedl/android/studio/install/4.1.2.0/android-studio-ide-201.7042882-mac.dmg

装这个只是为了让他把安卓的环境都准备好(又一个工具界的工具人),跟着安装步骤一直点就好了,不过M1芯片的现在还没法直接用AS附带的安卓模拟器,真机调试把,windows下用过AS的老哥应该都很熟了

使用AS开发Flutter需要安装Dart和Flutter插件

三、跑一个app试试

按照官方文档来就行,随便用一个第三方依赖包,可以检测出CocoaPods是否正常安装

这个是我之前自己在windows上写的一个小应用,只用了 shared_preferences这个包

运行flutter pub get获取依赖包

开启IOS模拟器,运行

最终效果: 

到此这篇关于MacBook M1 Flutter环境搭建的实现步骤的文章就介绍到这了,更多相关M1 Flutter环境搭建内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

[!--infotagslink--]

相关文章

  • macOS M1(AppleSilicon) 安装TensorFlow环境

    苹果为M1芯片的Mac提供了TensorFlow的支持,本文主要介绍了如何给使用M1芯片的macOS安装TensorFlow的环境,感兴趣的可以了解一下...2021-08-13
  • 前端自动化开发之Node.js的环境搭建教程

    这篇文章主要介绍了前端自动化开发之Node.js环境搭建的相关资料,文中介绍的非常详细,对大家学习或者使用node.js具有一定的参考价值,需要的朋友们下面来一起看看吧。...2017-04-03
  • 锤子M1全渠道现货开售:系统是最大购买点

    10月18日,锤子在上海举行了发布会。除了全新高配产品Smartisan M1系列外,Smartisan OS 3.0(目前已更新至3.2版本)操作系统也成为一大亮点,相较于以前的操作系统,进化到3.0版本后的 Smartisan OS 加入了很多创新性的交互方式和功能,同时在操作逻辑上有了更清晰的变化。...2016-12-31
  • Flutter悬浮按钮FloatingActionButton使用详解

    本文主要介绍了Flutter悬浮按钮FloatingActionButton使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-07-12
  • Flutter 开发一个登录页面

    登录页面在 App 开发中非常常见,本篇借登录页面的开发介绍了文本框 TextField组件的使用,同时使用文本框的装饰属性实现了个性化文本框设置。...2021-06-05
  • Flutter 底部弹窗ModelBottomSheet的使用示例

    在实际开发过程中,经常会用到底部弹窗来进行快捷操作,例如选择一个选项,选择下一步操作等等。在 Flutter 中提供了一个 showModelBottomSheet 方法用于弹出底部弹窗,本篇介绍如何使用底部弹窗。...2021-06-07
  • 锤子M1全渠道现货开售:系统才是坚持的情怀

    锤子科技全新的M系列是希望能够满足看重性能的人,根源是“满”,而今天我们回归到手机产品本身看看Smartisan M1是否算是一款成功的产品。由于此次发布的锤子Smartisan M1和Smartisan M1L本身就有很多的共性,我们此次将重点评测M1这款产品。...2016-12-31
  • Flutter 如何封装文本输入框组件

    在实际开发过程中,往往开始是完成功能层面的开发,然而再考虑组件封装和代码优化。当然,组件封装越早做越好,因为这样会提高整个团队开发的规范性和效率。本文将介绍如何封装一个文本输入框组件...2021-06-05
  • Flutter项目在 iOS14 启动崩溃的解决方法

    这篇文章主要介绍了Flutter项目在 iOS14 启动崩溃的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-24
  • flutter实现点击事件

    这篇文章主要介绍了flutter实现点击事件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-26
  • 微信小程序 window_x64环境搭建

    这篇文章主要介绍了微信小程序 window_x64环境搭建的相关资料,需要的朋友可以参考下...2016-10-02
  • golang语言中wasm 环境搭建的过程详解

    将 golang 打包为 WASM,通常有两种打包方式,一种是 golang 自带的,另外是使用 tinygo ,接下来通过本文给大家介绍golang语言中wasm 环境搭建的过程,感兴趣的朋友一起看看吧...2021-11-10
  • 锤子M1全渠道现货开售:配置很“嚣张”

    10月18日,老罗在上海梅赛德斯中心召开了可能是锤子科技史上最大规模的发布会。同时也在当天发布了两款锤子M系列的新机M1和M1L。小编非常幸运地第一时间体验到M1。...2017-01-22
  • 时下最顶级配置,买锤子M1送耳机等好礼

    告别了锤子T1和T2两部手机,老罗带来了全新的第三代产品——Smartisan M1M1L。与以往不同的是,锤子新机并没有延续T系列的命名传统,而是打造了全新的M系列,带来5.15英寸的M1和5.7英寸的M1L。...2017-01-22
  • flutter的环境安装配置问题及解决方法

    Flutter是Google推出的基于Dart语言开发的跨平台开源UI框架,旨在统一纷纷扰扰的跨平台开发框架,在UI层面上多端共用一套Dart代码来实现多平台适配开发,这篇文章主要介绍了flutter的环境安装配置问题,需要的朋友可以参考下...2020-06-09
  • 锤子M1全渠道现货开售:硬件配置“令人生畏”

    正如外界所料,这次锤子带来两款新品,但命名不是T3T3L,而是分别为5.15英寸屏的M1与5.7英寸屏的M1L。...2017-01-22
  • 详解Flutter 调用 Android Native 的方法

    这篇文章主要介绍了详解Flutter 调用 Android Native 的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-25
  • 锤子M1全渠道现货开售,罗永浩确实在用心做产品

    实力与创新并存让锤子 M1 市场表现不俗,而锤子科技也在不断地增加了产量。根据最新消息,锤子M1已经可以在包括锤子官网、京东商城和苏宁易购现货购买。...2016-12-31
  • 锤子M1大爆炸Big Bang功能开源:手机应用开发者均可使用

    罗永浩最新的锤子M1、M1L不但硬件配置达到了期间水准,Smartisan OS系统设计依然有其独到之处,尤其是创新的One Step(一步)、Big Bang(大爆炸)。,目前这两个功能均已实现开源,所以手机应用开发者均可使用...2017-07-06
  • 锤子M1全渠道现货开售:老罗口中最有出息的“孩子”受到市场热捧

    Smartisan T2之后,大家经过近一年的等待,盼来了锤子的新作锤子M1。前些日子老罗在直播中说到:“M1可能不是最好看的孩子,但是最有出息的一个。”这其中的出息,应该就指的是主流高配置。M1在性能上的补足,可以说是补上了锤子手机的唯数不多的短板,自公开销售以来,这个“最有出息的孩子”受到市场热捧。...2016-12-21