如何在 Apple Silicon (M1) 上开发 Teams App

apple 在几个月前发布了自家的芯片 M1,由于将多核cpu,多核gpu,神经网络运算,内存和其他一切处理部件高度整合在一起,大大提高数据传输速度。发布后好评如潮,我也没有忍住,入手了一台最低配的mac air m1。目前 M1 还是有很多软件不能很好支持,当然,这个无法阻挡我在上面的开发。我给大家分享一下我在apple silicon上开发的过程。

M1

首先,到写这篇文章的时候还有很多开发软件不支持跑在M1上,我们来看看当前的状态。

  1. Docker正式发布版本不原生支持 apple silicon,preview 版本已经开始支持,但目前问题较多
  2. VScode正式发布版本不原生支持,insider版本已经开始支持,但目前问题较多
  3. .NET目前的LTS版本3.1和最新的5.0都不原生支持,目标是6.0版本支持
  4. NodeJS preview版本支持
  5. Python支持

所以,如果大家是JS, Python语言技术栈的话,恭喜,你已经开始在 M1 上进行原生开发了,只是目前大多数都在preview阶段。

如果你和我一样是 .NET 技术栈的话,一种方式是使用 Rosetta 来转换,但是转换的话就无法体验 M1 给我们带来的快感。网上有一个视频比较 VScode 启动速度的,使用 Rosetta 转换的话,明显慢,大概需要 5-8 秒,但是如果是原生的话,基本是瞬间就完成了(1秒以内)。

所以我使用的是另外一种方式,VScode remote,我在azure上开了一台虚机,vscode使用ssh的方式远程上去。下面是一些操作的链接

  • VScode insider build for Apple Silicon (ARM64) https://code.visualstudio.com/insiders/
  • 配置SSH远程开发的步骤 https://code.visualstudio.com/docs/remote/ssh
  • 在远程虚机上安装.net https://docs.microsoft.com/en-gb/dotnet/core/install/linux

使用云端的虚机的好处是:你已经有一个public地址,所以不需要安装 ngrok 软件,可以直接把虚机的 ip 地址直接给到 teams,只需要记得打开对应的端口就可以了。如果你的虚机不是在云端的,那需要单独再安装 ngrok。

我的虚机是 ubuntu 20.04 LTS版本,如果你使用的是 windows 的远程虚机,那需要安装 openssh,但是这里有一个坑,我之前就掉进去,花了3,4小时才发现是一个已知问题,就是如果你的机器名字和用户名是一样的话,就死活登入不了。

另外,我自己的经验是,远程开发机器尽量使用 linux。这样如果你用来开发 python 或者 docker 相关的东西也会少遇到很多坑。

One more thing,目前 Teams 本身还不支持 M1,相信这个会被很快解决,因为 Electron 最近也已经支持了 apple silicon 了。https://www.electronjs.org/blog/electron-11-0

TeamsOnM1

最后,如果大家对目前各大软件支持apple silicon的进度感兴趣的话,可以访问这个网站,非常实用:https://isapplesiliconready.com/for/developer

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

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

相关文章

BZOJ5289 洛谷4437:[HNOI/AHOI2018]排列——题解

https://www.lydsy.com/JudgeOnline/problem.php?id5289 https://www.luogu.org/problemnew/show/P4437 考虑对于a[i]m,a[m]n,我们令p[j]i,p[k]m(一定会有一对(j,k)满足这个条件的),则我们会有p[k]a[p[j]],此时我们要…

集成学习-Adaboost

Adaboost 中文名叫自适应提升算法,是一种boosting算法。 boosting算法的基本思想 对于一个复杂任务来说,单个专家的决策过于片面,需要集合多个专家的决策得到最终的决策,通俗讲就是三个臭皮匠顶个诸葛亮。 对于给定的数据集&#…

主动给团队或用户安装Teams App

在写这篇文章的时候,这个新功能还处在 Public Review,这意味着可能(很小的可能性)这里写的方法在正式发布前还会有一些改动。 之前有一些做teams app开发的朋友问过我,能不能主动给一个team或者一个用户安装一个指定的…

thinkphp5多级控制器是什么?怎么使用?

thinkphp5多级控制器是什么?怎么使用? 一、总结 1、多级控制器是让控制器的级数变成多级,也就是controller目录下可以新建其它目录。 2、使用的话注意目录下的控制的的命名空间(加上目录名)(namespace app\…

给Teams消息附加图片的三种方式

Teams消息支持三种不同的方式来添加图片,这篇文章我们来一起看一下这三种方式。 Inline图片 var imagePath Path.Combine(Environment.CurrentDirectory, "abc.png"); var imageData Convert.ToBase64String(File.ReadAllBytes(imagePath)); var image…

4月18日 MySQL学习

正式开始了数据库的学习 昨天下好的MySQL 今天正式开始学习的,介绍了多种数据库软件,当然 学习的这个是开源的 免费的。 DBMS(数据库管理系统)这就是我们学习的数据库的软件 数据库分为关系型数据库管理系统和非关系型数据库管理系统(没有深入的了解) 今…

企业数据湖构建之旅

摘要:随着互联网的发展,数据的规模和类型都呈现一个爆炸性的增长,对于这么多类型的数据,如何进行有效的管理和存储,包括数据的分析,这是大家要面临的一个问题。在武汉云栖大会上,阿里云高级产品…

用AzureFunction开发最简单的Teams Bot

之前我有一篇文章讲了如何在azure function上开发最简单的outgoing webhook,收到一些反馈,建议我介绍一下如果在azure function上开发teams bot,那这篇文章就来讲一下如何用function来快速开发bot。 我们先创建一个azure function资源&#…

20189215 2018-2019-2 《密码与安全新技术专题》第7周作业

课程:《密码与安全新技术专题》 班级: 1892班 姓名: 李炀 学号:20189215 上课教师:谢四江 上课日期:2019年4月9日 必修/选修: 选修 1.本次讲座的学习总结 讲座主题:信息隐藏 信息隐藏…

BZOJ1565[NOI2009]植物大战僵尸——最大权闭合子图+拓扑排序

题目描述 Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏。Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻。该款游戏包含多种不同的挑战系列&#xf…

推送ActivityFeed到Teams

几个月前,Teams 团队又推出了新的 Graph API,让 app 可以给用户发送 Activity Feed。我们来看看如何做。 首先,我们的app需要使用较新的 manifest 1.7版本,当然如果使用最新的1.8版本就更好了。在manifest json中添加 webApplica…

RecycleView弹性滑动

还有点bug,建议使用 LinearSnapHelper rvPilotList.addOnScrollListener(new RecyclerView.OnScrollListener() {Overridepublic void onScrolled(NonNull RecyclerView recyclerView, int dx, int dy) {super.onScrolled(recyclerView, dx, dy);// …

关于深度学习,这些知识点你需要了解一下

深度学习概述 o 受限玻尔兹曼机和深度信念网络 o Dropout o 处理不平衡的技巧 o SMOTE:合成少数过采样技术 o 神经网络中对成本敏感的学习 深度学习概述 在2006年之前,训练深度监督前馈神经网络总是失败的,其主要原因都是导致…

发送不同类型的ActivityFeed

上一篇文章讲到了如何使用最新的Graph API来给一个用户发送一个简单的 Activity Feed。我们这篇文章来详细讲一下发送三种不同类型的消息。 发送 Chat 相关的 Activity Notification API 为 POST https://graph.microsoft.com/beta/chats/{chat-id}/sendActivityNotification…

git add * 提示warning: LF will be replaced by CRLF in 解决办法

在使用git的时候,每次执行 $ git add * 都会提示这样一个警告消息: 虽然说没有什么影响吧。 不过就是觉得太碍眼了, 按照这样设置就没有问题了: git config core.autocrlf false 这样设置git的配置后在执行add操作就没有问题了。 奋斗的年纪你…

git 放弃本地修改,强制拉取更新

开发时,对于本地的项目中修改不做保存操作(或代码改崩),可以用到Git pull的强制覆盖,具体代码如下: git fetch --all git reset --hard origin/master git pull //可以省略 git fetch 指令是下载远程仓库最…

发送ActivityFeed的隐藏功能

前两篇文章介绍了如何发送 activity notification,这篇文章主要介绍两个隐藏功能,实际上所谓的隐藏功能是指大家在阅读官方文档是会忽略的两个点,但是实际上也是很实用的两个功能点。 text 类型的 topic 之前文章中提到我们的 activity not…

Dispatch Queue 之 Invoke 当前队列

 转载于:https://www.cnblogs.com/huahuahu/p/dispatch-queue-zhi-invoke-dang-qian-dui-lie.html

js或jQuery获取当前屏幕的各种高度

Javascript: 网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeight 网页可见区域宽: document.body.offsetWidth (包括边线的宽) 网页可见区域高: document.body.offsetHeight (包括边线的高) …

Teams数据统计 - 用户在线离线状态

前几天我在wechat的moments里看到以为朋友发了腾迅会议的对用户个人的年度数据统计,看上去很有大数据感。 实际上 Teams 也具备的类似的能力,只是它把这个能力开放给了开发人员,我们可以通过强大的 Graph API,获取大量的数据信息&…