在m1芯片的macbookpro上高效开发android的正确姿势(代码片段)

yubo_725 yubo_725     2022-12-05     594

关键词:

前言

2020年11月,苹果发布了M1芯片以及搭载M1芯片的Mackbook pro,由于我的老笔记本还是17款的8G内存的Macbook pro,已无法满足高效工作的需求,而M1芯片在各个自媒体的评测中都取得了非常惊人的性能成就,于是我将自己的旧笔记本通过Apple官方回收卖掉,置换了一台16G的搭载了M1芯片的Macbook pro,本以为工作效率会大大提升,没想到悲剧才开始。

各种坑与解决方案

由于M1芯片基于arm64架构,跟intel的x86不同,虽然苹果提供了Rosetta帮助用户在M1芯片上运行基于intel CPU的应用程序,但是对于安卓开发者而言,坑还是太多了,下面一一说明我遇到的坑与相应的解决方案,希望给目前(2021年5月14日)还在使用M1 Macbook做Android开发的同行们一点帮助。

Android Studio

截止到目前(2021年5月14日)为止,Android Studio还没有推出适配M1芯片的稳定版,仅仅只推出了一个Android Studio Canary 15的版本粗略做了M1芯片的适配,但是Canary版本用于正式Android开发可能还是不太方便,关于该Canary版本,可以在这里查看更详细的更新说明。

Android Studio在搭载M1芯片的Macbook上可以正常运行,但是必须通过Rosetta模式才能运行,而且速度奇慢,经常是代码写着写着就卡住了,最开始Android Studio一天要崩溃好多次,随着MacOS的升级,崩溃问题好了很多,但是IDE工作起来还是会感觉非常卡,工作效率并未提升反而还下降了,好在M1推出不久后,IntelliJ IDEA发布了适配M1芯片的版本,于是我赶紧下载并使用了一番,发现速度真的是非常快,比Android Studio好用非常多。在Mac的活动监视器里可以看到IntellJ IDEA的CPU种类是Apple:


IntelliJ IDEA的官方下载地址为:https://www.jetbrains.com/idea/download/#section=mac

可以在这里下载到适配Mac Apple Silicon的IntelliJ IDEA
或者在这里下载适配Mac Apple Silicon的Android Studio Canary版本(直接下载地址:https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2020.3.1.15/android-studio-2020.3.1.15-mac_arm.zip)

Java

IDE卡慢的问题通过使用IntelliJ IDEA解决了,但是Android项目的编译速度还是上不去,主要是因为Oracle提供的JDK目前的版本是基于intel x86架构的,在Mac的活动监视器中也可以查看Oracle版的Java运行时的CPU种类是Intel,解决这个问题的方法是使用zulu jdk代替官方的jdk,在这个地址:https://www.azul.com/downloads/?version=java-8-lts&os=macos&architecture=arm-64-bit&package=jdk可以下载基于arm64架构的jdk版本,安装到Mac上之后,zulu jdk会安装到Mac的/Library/Java/JavaVirtualMachines目录下,之后你需要配置两个地方:

  1. 为Mac配置Java环境变量
  2. 为IntelliJ IDEA配置jdk目录

第一项配置,可直接编辑~/.bash_profile文件,在其中加入jdk目录即可,比如我的电脑配置的是下面的路径:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home

第二项配置,需要打开IntelliJ IDEA,选择菜单栏的File - Project Structure,然后配置jdk,如下图所示:

Android项目gradle插件配置

由于目前的IntelliJ IDEA还没有更新Android Gradle Plugin,会导致无法使用高版本的gradle插件,所以如果需要使用IntelliJ IDEA来开发Android项目的话,你需要指定项目根目录下的build.gradle文件中的gradle版本不超过4.0.2,否则项目跑不起来会报错,配置如下图所示:

Android项目运行到真机

使用适配M1芯片的IntelliJ IDEA运行Android项目到真机,你会发现项目可以正常安装到手机上,但项目在真机上无法自动打开,这个问题需要修改IntelliJ IDEA中依赖的sqlite jar包,在这里:https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc下载一个新的SQLite JDBC library,注意需要选择版本号大于等于3.32.3.3的版本,因为从3.32.3.3这个版本才开始支持M1芯片,具体信息可以从这里查看。下载了新版本的jar包后,我们在Mac终端中进入/Applications/IntelliJ IDEA CE.app/Contents这个目录,然后open .在Finder中打开该目录,在Contents目录下搜索sqlite,会发现有两个目录下存在sqlite-jdbc的jar包,分别是:

  1. lib/
  2. plugins/svn4idea/lib/

用前面下载的新版本的jar包替换掉这两个地方的老的jar包,然后重启IDEA即可。

模拟器

由于CPU架构的问题,之前的Android模拟器都无法在M1芯片的Macbook上运行,目前Google官方提供了一个支持M1芯片的Android模拟器预览版,GitHub主页是:https://github.com/google/android-emulator-m1-preview/releases/tag/0.3

通过如上几步配置后,在M1芯片的Macbook pro上就能非常高效的开发Android应用了,卡顿和编译慢的问题有了很大改善,当然作为Android开发者,还是期望Android Studio稳定版能尽快适配M1芯片。

参考:https://blog.csdn.net/sinat_38184748/article/details/114520584

在 M1 芯片上运行 rails 时出错(Apple Silicon)

】在M1芯片上运行rails时出错(AppleSilicon)【英文标题】:ErrorrunningrailssonM1chip(AppleSilicon)【发布时间】:2021-05-1123:39:06【问题描述】:我正在尝试学习Rails,但在尝试运行服务器时遇到了问题。我阅读了reddit、Youtube教程、Stackover... 查看详情

如何在 mac M1(Apple 芯片)上使用 google_sign_in api 进行开发

】如何在macM1(Apple芯片)上使用google_sign_inapi进行开发【英文标题】:howtodevelopusinggoogle_sign_inapionmacM1(Applesilicon)【发布时间】:2021-11-0300:27:33【问题描述】:我最近开始在M1mac上使用颤振开发一个项目,我所有的依赖项都可以正... 查看详情

ARM64架构(M1芯片):无法安装pg gem(使用PostgresApp)

...题描述】:我一直在尝试在运行BigSur的计算机(带有M1的MacbookPro2020)上安装一个rails项目。我已经安装了PostgresApp。运行bundlei 查看详情

快速查看mac应用程序是不是与m1兼容的方法

...英特尔芯片编写和编译的。但是必须为用于新MacBookAir,MacBookPro和Macmini的AppleM1重新编译。同时,Apple为macOSBigSure开发了Rosetta2。早期迹象表明该工具可以很好地工作。这是兼容M1的macOS应用程序网站上的另一个数据点。如何确定mac... 查看详情

苹果m1芯片的电脑怎么配置java开发环境?

苹果新出的M1系列的笔记本安装哪个版本的JDK,怎么装IDEA?通过rosetta2转译的形式吗?该怎么安装参考技术A方法/步骤打开Java的下载网址。Mac电脑上如何配置Java开发环境在下载链接中找到“MacOSXX64”对应的安装包并下载。Mac电脑... 查看详情

“因为内存泄漏,我的m1macbookpro瘫痪了”

...HomePodmini等新品,而这场发布会真正的主角当属新款MacBookPro:强悍的M1Pro/M1Max芯片,再结合最新的macOSMonterey系统,新款MacBookPro便能发挥非常卓越的性能,引得无数果粉争先抢购。芯片是好芯片,但系统似... 查看详情

无法在苹果 m1 芯片中的颤振项目上执行 pod 安装

】无法在苹果m1芯片中的颤振项目上执行pod安装【英文标题】:Can\'tperformpodinstallonflutterprojectinapplem1chip【发布时间】:2021-11-0806:19:33【问题描述】:我最近做了一个Flutter项目,并将该项目移到了我的带有m1芯片的新macmini上。我... 查看详情

MacBook Air M1 芯片上的可可豆荚问题,Big Sur OS v11.6.1

】MacBookAirM1芯片上的可可豆荚问题,BigSurOSv11.6.1【英文标题】:IssuewithcocoapodsonMacBookAirM1chip,BigSurOSv11.6.1【发布时间】:2021-12-2604:18:13【问题描述】:我是一名应用程序开发人员,我一直在尝试在我的新Mac上进行设置。我正在开... 查看详情

如何在 Apple M1 芯片上导入 Pandas

】如何在AppleM1芯片上导入Pandas【英文标题】:HowdoIimportPandasonAppleM1chip【发布时间】:2021-04-1008:44:00【问题描述】:当我打电话时:importpandasaspd在tensorflow_macos(用于M1芯片)我明白了:ImportErrorTraceback(mostrecentcalllast)~/tensorflow_maco... 查看详情

虚拟环境 Apple M1 芯片上的错误架构问题

】虚拟环境AppleM1芯片上的错误架构问题【英文标题】:WrongarchitectureissueonvirtualenvironmentAppleM1Chip【发布时间】:2021-08-1114:27:46【问题描述】:我一直试图在我的新macbookAppleM1芯片机器上运行我的django项目,但只遇到以下错误。我... 查看详情

配备 M1 Max 芯片的新 MacBook Pro 上的 Android Studio?

】配备M1Max芯片的新MacBookPro上的AndroidStudio?【英文标题】:AndroidStudioonnewMacBookProwithM1MaxChip?【发布时间】:2021-12-2305:20:09【问题描述】:有什么技巧可以让AndroidStudio在新的M1MaxMacBookPro上运行?我尝试哪个版本都没有关系,我总... 查看详情

在 mac M1 芯片上构建 docker amd64 镜像

】在macM1芯片上构建dockeramd64镜像【英文标题】:Buildingdockeramd64imagesonmacM1chip【发布时间】:2021-10-1904:44:24【问题描述】:我正在尝试以两种方式在我的macM1(arm64)上构建一个dockerfile(以下dockerfile的重要部分):FROMerlang:24#elixirexpe... 查看详情

m1芯片mac搭建前端开发环境

参考技术AM1芯片出来了有一段时间了,各类软件的兼容性已经跟进的差不多了,迫于M1实在太香,我的M1Macbook也于本周到达了我的手上。在花费了两三个小时搭建完开发环境后,立马用它开始干活了。这几天的感受只有寥寥一语... 查看详情

乔布斯当场“复活”,苹果发airpods3和地表最强电脑芯片,秀刘海屏macbookpro

...重磅登场的AirPods第三代、屏幕和外观史诗升级的16/14英寸MacBookPro以及M1Pro和M1Max两款“地表最强芯片”,让人不禁感叹,你苹果还是你苹果。M1Max的暴力32核GPU性能是英特尔酷睿 查看详情

linux系统适配苹果m1芯片的项目有新进展

导读苹果自研的M1芯片于2020年正式发布,从产品发布起,一些开发者便开始了将 Linux 系统适配M1芯片的项目。近日消息苹果自研的M1芯片于2020年正式发布,从产品发布起,一些开发者便开始了将Linux系统适配M1芯... 查看详情

“因为内存泄漏,我的m1macbookpro瘫痪了”

...HomePodmini等新品,而这场发布会真正的主角当属新款MacBookPro:强悍的M1Pro/M1Max芯片,再结合最新的macOSMonterey系统࿰ 查看详情

使用 M1 芯片在 Unity Editor 上添加 Vuforia 插件不起作用

】使用M1芯片在UnityEditor上添加Vuforia插件不起作用【英文标题】:AddingVuforiaPluginonUnityEditorwithanM1chipdoesnotwork【发布时间】:2022-01-1013:28:32【问题描述】:我尝试在UnityEditor上安装Vuforia插件,但没有成功。错误信息是这样出来的:... 查看详情

Xcode 在 M1 MacBook Pro 上引发构建错误

】Xcode在M1MacBookPro上引发构建错误【英文标题】:XcodethrowsbuilderroronM1MacBookPro【发布时间】:2021-11-2309:30:33【问题描述】:我们有一个可以在旧的基于Intel的MacBook上正确编译的应用程序。但是在M1MacBookPro上,由于arm64最新iPhone模拟... 查看详情