ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux下安装Android Studio Bumblebee:从KVM加速到SDK配置全攻略

Linux下安装Android Studio Bumblebee:从KVM加速到SDK配置全攻略 简介本资源为 Android Studio Bumblebee 2021.1.1 Patch 2版本号 2021.1.1.22官方 Linux 发行版安装包面向 Android 应用开发者、移动开发学习者及高校实训师生用于搭建稳定、功能完备的安卓应用开发环境。压缩包共含 2000 个文件主体为 689 个 jar核心工具链与插件、1012 个 py构建脚本与自动化支持、250 个 json配置与元数据、200 个 ttfUI 字体资源及 164 个 webp界面图标素材另有大量 so 动态库、xml 布局定义与 license 文件体现完整 IDE 运行依赖体系。资源大小为 904.35MB结构规范开箱即用。目前已有 345 人下载学习可直接解压部署于 Ubuntu/CentOS 等主流 Linux 发行版支持 Kotlin/Java 开发、Jetpack Compose 调试、NDK 编译及 Profiler 性能分析等全栈开发流程是适配 Android 12 SDK 的关键开发基线版本。 这一版的标题虽是老版本但确实值得拆开来讲。Bumblebee2021.1.1是我实际在Linux上用了很久的Android Studio版本客观说它没有新版那么多花哨功能但胜在稳定、资源占用可控尤其对配置一般的开发机非常友好。这篇文章我会从安装到跑通第一个项目把我在Linux上折腾这台开发环境的完整过程写出来包括KVM虚拟化、SDK配置、Gradle加速、中文界面处理这些高频问题也算是给准备入坑的人一份可以直接照抄的操作记录。整个安装过程其实不复杂但Linux的坑往往不在“安装”这一步而在安装完之后的权限、环境变量、虚拟化这些细节上。如果你之前习惯用Windows换到Linux之后经常会疑惑“为什么我装了Android Studio模拟器却跑不起来”或者“明明项目同步好了编译却报各种奇怪错误”。这篇文章里提到的内容基本都能覆盖到这些困惑。1. 版本背景与选型思考1.1 Bumblebee在Android Studio版本线里的位置Android Studio的版本命名从Arctic Fox之后就统一改成了按年份动物代号的形式Bumblebee就是2021.1.1这个版本对应的是2021年底到2022年初的主力版本。它排在北极狐Arctic Fox之后、大黄蜂Chipmunk之前所以你在网上搜资料时经常看到这三个版本混在一起说。Bumblebee有几个比较关键的更新点首次把项目创建向导整个重写了新建Android项目时会让你填包名、选择语言Kotlin/Java、最小SDK版本比老版本那种多页面的向导简洁很多同时它对Jetpack Compose的支持已经趋于成熟如果你是想学Compose用Bumblebee没有任何问题另外它内置了OpenJDK 11就是安装包里的jbr目录也就是说你不需要自己单独装JDK这个对新手来说非常友好。我在标题里写的是android-studio-2021.1.1.22-linux这是Bumblebee在2021年12月左右发布的一个修订版安装包对应具体的Linux x86_64平台的tar.gz压缩包。当时这个版本解决的问题主要是上一次小版本里的Gradle同步卡死、低内存环境下IDE崩溃等所以稳定性比初版好不少直到今天依然有不少人在老电脑或者服务器上用它。1.2 为什么现在还要选这个老版本我知道你可能会问为什么不直接用最新版Android Studio这里有个很现实的问题最新版对硬件要求不断提高比如新版JBRJetBrains Runtime默认会占用更多内存而且Gradle和AGP版本的更新节奏很快很多老项目直接升级到新版之后编译会报一堆兼容性错误。如果你手里有一个稳定的老项目平时只是维护不追求用最新的编译工具链选择像Bumblebee这样的稳定版本反而省心。从资源占用的角度说Bumblebee在Linux上的表现非常可控启动后内存占用在2GB左右创建空项目跑一次完整构建大约需要1-2分钟取决于Gradle版本和网络状况而新版本动不动就吃3GB以上内存Gradle同步也要等更久。对于8GB内存的开发机尤其是笔记本来说Bumblebee的体验会明显流畅很多。另外一个很实用的点Bumblebee和AGP 7.x系列配合非常成熟。当时的默认AGP版本是7.0或7.1Gradle版本7.0这个组合的兼容性经过了大量项目的验证网上能搜到的错误解决办法也最多遇到问题基本都能查到解法。换到新版Android Studio之后很多老问题不再出现但新问题的资料却很少排查起来很头疼。1.3 Linux下安装的开发环境全景在开始装之前先对Linux下Android开发的环境组成有个总览认识后面动手时会清晰很多。整个开发环境大致由四层组成最底层是Linux系统本身和硬件CPU、内存、磁盘第二层是Java运行环境Android Studio的JBR第三层是IDE和Android SDKplatform、build-tools、platform-tools第四层是构建系统和模拟器Gradle、AGP、KVM加速的模拟器。这四个层次之间不是独立的任何一个环节有问题都会在IDE的某个功能上体现出来。比如KVM没安装好模拟器启动就会报“/dev/kvm not found”JDK版本不对Gradle同步就会失败SDK的platform-tools没装adb就找不到设备。所以后面我会按这个层次逐个检查、逐个安装尽可能把基础环境一次搭好避免后续反复折腾。2. 安装前的准备工作2.1 确认Linux发行版和磁盘空间我是在Ubuntu 20.04 LTS上做的安装但Debian、CentOS、Fedora这些发行版的安装思路是通用的差异主要在包管理器上。Ubuntu/Debian用aptFedora用dnfArch用pacman都行。如果你的系统是国产操作系统如统信UOS、麒麟底层如果是Debian系那和我下面说的apt命令是通用的。首先是磁盘空间。Android Studio安装包本身约1GB解压后占2GB左右但Android SDK你至少要准备20GB以上空间。一个platform版本加build-tools大概要2GB系统镜像system image动辄1GB起步我建议把SDK放在一个单独的分区避免和系统盘抢空间。用df -h命令先看一下当前各分区剩余空间优先选空间大的。然后是内存和CPU。最低要求是8GB内存低于这个跑起来会比较难受。CPU只要是x86_64架构AMD、Intel都行并支持虚拟化VMX/SVM模拟器加速就没问题。用nproc看CPU核心数用free -h看内存大小如果内存不够后面可以优化VM堆内存但体验有限。在Ubuntu上我建议先把一些基础工具装好比如git、unzip、curl、wget这些后面搭建环境经常用sudo apt update sudo apt install git unzip curl wget vim如果系统中缺少某些运行库启动Android Studio时可能会报错或白屏常见的库有libgl1、libxrandr2、libxi6等。让我确认一个细节如果你用的是精简版Linux或者服务器版桌面环境都没装那跑Android Studio就比较费劲了。如果只有命令行终端我建议你先装一个轻量桌面如Xfce否则IDE无法显示界面。2.2 JDK检查与系统自带Java的干扰问题很多人装Android Studio之前会自己先装一个Java这里其实有个常见的坑。Android Studio的安装包里自带jbr目录它使用的是JetBrains RuntimeOpenJDK 11的定制版这个内置的JDK是IDE自身运行和Gradle构建都依赖的版本。它不一定非要我们额外安装系统级JDK。但问题是如果系统里已经装了其他版本的Java环境变量JAVA_HOME可能指向它而Gradle构建时会优先读取JAVA_HOME或者读取Android Studio设置里的Gradle JDK配置。一旦这个JDK版本不对比如JDK 17就可能导致Gradle构建报“Unsupported class file major version”这类错误。所以安装前最好检查一下系统当前Java情况java -version echo $JAVA_HOME如果显示了Java版本且不是你需要的也不要急着卸载因为系统里有些工具可能依赖它。正确的做法是进入Android Studio后打开“File - Settings - Build Tools - Gradle”在“Gradle JDK”下拉框里选择“Use embedded JDK推荐”。这样Gradle就会用Android Studio自带的JDK 11不会受系统Java干扰。我实际遇到过一个情况系统里装了OpenJDK 17Gradle同步正常但打包时提示“Invalid JDK”后来一查就是Gradle JDK设置错误。所以提前把这个设置写清楚免得踩同样的坑。2.3 KVM虚拟化检查与权限配置如果你打算用模拟器KVM不是可选项而是必需项。Linux上的Android模拟器不像Windows那样依赖HAXM或Hyper-V它走的是KVMKernel-based Virtual Machine这套内核级虚拟化方案。Intel的VT-x和AMD的SVM在BIOS里开启之后系统才能通过KVM提供硬件加速。先检查系统是否支持虚拟化egrep -c (vmx|svm) /proc/cpuinfo如果输出数字大于0说明CPU支持虚拟化。然后再确认KVM内核模块是否已加载ls -l /dev/kvm如果提示No such file or directory说明KVM模块没启用或者BIOS里的虚拟化开关没打开。最简单的处理是sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils sudo adduser $USER kvm加完用户组之后需要注销重新登录。如果/dev/kvm还是没有出现那就得重启进BIOS找到Intel VT-x或者AMD SVM的开关把它打开然后再次检查。这里还有一个很容易忽略的点即使/dev/kvm存在如果当前用户在kvm组里没有权限模拟器照样起不来。用getent group kvm看一下组成员用id确认自己是否在组内。如果在但还没生效执行newgrp kvm或者重新登录一次。我一开始装的时候就漏了这个模拟器一直报权限错误后来才发现是没重新登录用户组配置没生效。3. 安装实操步骤3.1 下载安装包与解压目录的选择以android-studio-2021.1.1.22-linux这个包为例从官网或者镜像站下载得到的是一个tar.gz压缩包文件名大概是android-studio-2021.1.1.22-linux.tar.gz。下载完成后我习惯把它放到~/Downloads目录然后解压到/opt而不是用户目录这样系统所有用户都能访问也便于统一管理。为什么要放/opt而不是直接解压到家目录原因有两点一是/opt是Linux里存放第三方软件的标准目录文件结构更规范二是如果你用多个Linux账号大家都能共享这套IDE不需要每个账号单独装一份。当然放/opt需要root权限你执行下面的命令时注意sudo的使用sudo tar -xzf ~/Downloads/android-studio-2021.1.1.22-linux.tar.gz -C /opt解压完成后检查一下目录结构ls -l /opt/android-studio正常情况下你会看到一个bin、jbr、lib、plugins等目录其中bin/studio.sh是启动脚本jbr就是自带的Java运行时。如果ls能看到这些说明解压没有损坏。如果你不想用/opt也可以解压到~/AndroidStudio目录这样无需sudo但后续不同用户共享就不太方便。自己一台机器的话随便放哪个目录都可以只要记住路径就行。我遇到过一种情况解压时报“tar: This does not look like a tar archive”错误多半是下载的文件不完整重新下载就好。另外下载过程中建议校验一下文件大小和sha256校验值官网都会给避免网络原因导致的包损坏。3.2 用命令行启动还是桌面快捷方式启动Android Studio最直接的方式是运行启动脚本/opt/android-studio/bin/studio.sh这个脚本会检测Java环境、设置IDE运行参数然后弹出启动画面。初次启动它会引导你进行初始配置比如导入设置如果你没有旧版本配置选择“Do not import settings”、选择UI主题然后进入Setup Wizard。第一次启动可能要等上一两分钟因为IDE要初始化索引、创建配置文件目录。配置文件目录默认在~/.config/Google/AndroidStudio2021.1/或~/.android具体路径和安装方式有关后面排查问题时经常会用到这些目录。这里有一个非常重要的建议不要用sudo来启动studio.sh。如果你用root权限运行IDE创建出来的文件和目录所有者都是root之后你写代码、运行Gradle时那个项目目录就成root的了普通用户无法写入。这样会导致你每次保存代码都要sudo非常痛苦。就算之前误操作过可以用sudo chown -R 你的用户名:你的用户组 目录路径来修复。每次都在终端里敲一长串命令去启动确实不太方便。Linux下更常见的做法是创建桌面快捷方式在/usr/share/applications/目录下新建一个android-studio.desktop文件[Desktop Entry] NameAndroid Studio CommentAndroid Development IDE Exec/opt/android-studio/bin/studio.sh Icon/opt/android-studio/bin/studio.png Terminalfalse TypeApplication CategoriesDevelopment;IDE;保存之后在应用菜单里就能看到Android Studio图标。如果你的桌面环境显示不出来可能是.desktop文件没有执行权限运行chmod x /usr/share/applications/android-studio.desktop再刷新菜单。3.3 环境变量与常用命令配置为了让日常操作更顺手我建议把Android SDK相关的路径加到环境变量里。编辑~/.bashrc在末尾追加export ANDROID_HOME$HOME/Android/Sdk export PATH$PATH:$ANDROID_HOME/platform-tools export PATH$PATH:$ANDROID_HOME/cmdline-tools/latest/bin等等SDK的默认路径你其实可以在IDE里自己指定不一定非要用Android/Sdk这个默认值。我之所以建议把ANDROID_HOME设置好是因为很多命令行构建工具比如Gradle、Cordova、Flutter都会读取这个环境变量来定位SDK。如果你不用这些工具不设置也不影响IDE工作但设置了总是稳妥一些。执行source ~/.bashrc让配置生效。之后在终端输入adb如果能看到adb的版本文案说明platform-tools已经在PATH里了。另外很多人习惯在终端里直接敲studio来启动IDE这个可以做别名alias studio/opt/android-studio/bin/studio.sh把这个加到.bashrc里即可。不过提醒一下如果你在终端里运行studio命令后关闭了终端IDE也会跟着退出最好用nohup或者直接通过桌面快捷方式启动让IDE独立于终端运行。3.4 Windows迁移用户特别注意的地方如果你之前是在Windows上开发迁到Linux之后有几个习惯改一改能少踩很多坑。首先Linux对文件权限敏感不要再用类似Windows里“管理员身份运行”的思路去解决问题。遇到权限不足优先检查当前用户是否在相应组里或者目录所有者是否正确。其次路径分隔符不一样。Windows用反斜杠Linux用正斜杠。Android项目很多配置里需要写文件路径用反斜杠会直接报错。Gradle构建脚本里如果用Windows风格路径大概率编译失败。第三换行符。Windows的文本文件默认CRLF换行Linux默认LF。如果你用Git管理项目建议在仓库根目录放一个.gitattributes文件声明对文本文件统一用LF否则IDE里可能每一行都提示Diff非常恼火。最后Windows下开发常用的SDK平台、NDK这些在Linux下不能直接拷贝SDK目录过去因为二进制文件不兼容需要重新下载对应平台的SDK组件这个后面会讲。4. 首次启动与SDK配置4.1 Setup Wizard中的三个关键选择第一次启动Android Studio会进入Setup Wizard主要做三个关键选择。第一个是导入设置。如果你之前没有安装过Android Studio选“Do not import settings”。如果你有旧版本或者有从别的地方弄来的配置文件可以选“Import settings from...”把之前的IDE配置、快捷键、主题带过来。我建议没有特殊需求就选不导入尽量干净起步避免旧配置里的插件兼容性问题。第二个是UI主题。这里可选Darcula深色或者IntelliJ浅色。选哪个纯看个人喜好后续在Settings里随时可以改。第三个是SDK组件的安装。Setup Wizard会自动检测SDK路径默认是~/Android/Sdk。如果你之前没有SDK它会询问是否下载此时建议把需要的组件先选好Android SDK Platform-Tools包含adb、Android SDK Build-Tools构建工具、Android SDK Platform至少一个版本的platform比如Android 12对应API 31。注意系统镜像System Image不要在这步下载占空间又慢等创建模拟器的时候再单独选。Setup Wizard下载SDK组件时耗时较长因为默认走的是Google的服务器。这一步网络通畅的话没问题如果下载慢后续可以在SDK Manager里配置国内镜像源这里先留个印象后面专门说。4.2 SDK路径选择与目录管理Setup Wizard会让你确认SDK安装路径。默认是~/Android/Sdk这个路径本身没有太大问题但我想提醒几点。第一不要在路径中包含空格和中文。虽然现代Linux对空格的支持不错但Android SDK工具链里很多脚本不做空格转义一旦出现空格构建时可能报各种奇怪错误。这一点在Windows上大家经常会犯Linux上如果你手动指定了含空格的目录同样会踩坑。第二SDK会占很大的磁盘空间。如果你有独立的home分区那没问题放在默认路径就好。如果你把home和系统放在同一个分区且空间紧张我建议把SDK放到独立的路径比如/data/Android/Sdk然后在IDE的SDK Manager里手动填这个路径。第三一个SDK可以被多个项目共用所以SDK路径其实没有“每个项目一个”这种说法。你可以在多个Android Studio版本之间共用同一个SDK前提是SDK版本足够新老版本AS也能识别。Bumblebee对SDK版本的支持到API 31没问题再新一点的API 33也会提示安装但能用不必太担心。4.3 SDK Manager里我建议勾选哪些组件SDK Manager的完整路径是“File - Settings - Appearance Behavior - System Settings - Android SDK”。进入后会看到SDK Platforms和SDK Tools两个选项卡。在SDK Platforms下我建议先勾选你目标设备系统对应的API版本。比如你在用Android 12手机调试就勾选Android 12API 31。如果不知道选哪个最稳妥的办法是把你开发应用的minSdkVersion和targetSdkVersion之间的所有版本都勾上这样后续切换设备调试时不会缺SDK。在SDK Tools下重点关注这几项Android SDK Build-Tools构建工具通常安装一个常用的版本即可比如31.0.0。Android SDK Platform-Tools包含adb、fastboot等工具必装。Android Emulator模拟器本体如果有KVM支持就装。Android SDK Command-line Tools提供sdkmanager命令后续很多自动化操作靠它。NDK可选如果你想写C/C代码需要NDK和CMake。不要一次性把所有系统镜像都下了再慢慢挑先装核心组件等实际用到再补。因为每个系统镜像都很大下了一堆没用上最后只会占磁盘。4.4 创建第一个项目并跑通构建配置完SDK之后就可以创建一个空项目来验证环境了。点击“New Project”选择“Empty Activity”填写项目名称比如MyFirstApp、包名比如com.example.myfirstapp、语言Kotlin或Java然后Finish。Bumblebee的Project Structure里默认的AGP版本是7.0.4或更高Gradle版本是7.3.x这套组合不需要额外修改就能跑起来。第一次打开项目会触发Gradle同步Gradle Sync。这个阶段会下载Gradle本身Gradle wrapper会根据gradle-wrapper.properties里的distributionUrl去下载、AGP依赖、以及项目里用到的第三方库。通常这一步是最容易卡住的尤其是网络状况不佳的时候下到一半就失败。如果Gradle同步卡住或超时你可以手动检查gradle-wrapper.properties文件distributionUrlhttps\://services.gradle.org/distributions/gradle-7.3.3-bin.zip下载这个zip然后放到Gradle缓存目录一般在~/.gradle/wrapper/dists或者改distributionUrl指向国内镜像。我用的是把Gradle压缩包手动下载并提前放到Gradle缓存目录的方法这样Android Studio同步时直接命中缓存不需要重复下载速度提升非常明显。同步完成之后点击工具栏的“Run”绿色三角形或者按ShiftF10构建项目并尝试部署到设备。如果没有连接真机也没有创建模拟器IDE会提示选择部署目标。Bumblebee里可以直接点“Create New Virtual Device”来创建模拟器选一个Pixel 4之类的设备再选一个System Image建议选x86_64架构然后就会启动模拟器。模拟器首次启动会比较慢可能1-2分钟如果一直卡在启动界面多半是KVM问题或者设备配置过高。把模拟器配置调低一点比如分配1GB内存、低分辨率会更容易启动成功。5. 中文设置与汉化的正确姿势5.1 区分系统中文和IDE中文设置“Android Studio怎么设置中文”这个热搜词其实包含两层意思一是Linux系统界面的中文显示这个由操作系统和桌面环境决定二是Android Studio的IDE界面语言。很多人把这两个混在一起导致查问题越查越乱。如果你的Linux系统本身是英文界面但你希望操作系统的文件管理器、设置菜单显示中文可以在系统设置的用户语言里选择中文简体并重启。以Ubuntu为例路径是“Settings - Region Language”把Language改为“中文简体”然后注销重新登录。如果系统本身已经包含中文字体包就不会出现乱码如果没有用apt install fonts-noto-cjk安装中文字体。IDE中文界面则完全是另一回事。Android Studio和IntelliJ IDEA一样默认界面语言是英文它的界面语言设置并不在系统设置里而是通过插件机制和IDE的“IDE Language”配置来实现。你不需要去修改系统语言只需要在IDE内部做设置即可。5.2 通过插件安装官方中文语言包Android Studio从Bumblebee这代开始官方就已经提供了中文语言包插件“Chinese (Simplified) Language Pack”这个插件在JetBrains插件仓库里可以搜索到安装后重启IDE界面就变成中文了。操作路径是File - Settings - Plugins - Marketplace搜索“Chinese”看到“Chinese (Simplified) Language Pack”有时带EAP后缀点Install。安装完成后IDE会提示重启重启后界面语言就切换为简体中文。如果你在Marketplace里搜不到这个插件常见原因是网络问题导致插件列表加载失败。这种情况下可以先去JetBrains插件官网下载插件zip包然后通过Plugins页面右上角的齿轮图标选择“Install Plugin from Disk...”选中下载的zip文件即可离线安装。另外如果你既安装了官方中文包又想保留英文的某些术语可以在语言插件安装后不用重启去Settings里搜索“Language”或者手动调整界面语言如下老版本没有直接切换语言菜单需要添加JVM参数编辑bin/studio.vmoptions添加-Duser.languageen或zh_CN。但Bumblebee这代装中文包已经够用不需要手工改参数。5.3 输入法设置与中文乱码问题Linux下写代码时输入中文主要靠输入法框架fcitx或ibus。Android Studio作为Swing应用对输入法框架的支持一直比较敏感。常见的问题是明明系统输入法能正常输入中文但Android Studio里却打不出中文或者输入法状态栏不出现。如果你使用的是fcitx5可以在/etc/environment或~/.xprofile里加两行export XMODIFIERSimfcitx export GTK_IM_MODULEfcitx export QT_IM_MODULEfcitx然后注销重新登录。如果用的是ibus对应改成ibus。中文乱码这个问题通常是字体缺字导致的。安装中文字体包一般能解决大部分乱码问题sudo apt install fonts-noto-cjk fonts-wqy-microhei fonts-wqy-zenhei。然后在IDE的Settings - Editor - Font里选择中文显示友好的字体比如Noto Sans CJK SC或文泉驿微米黑。有一位朋友曾经问我为什么IDE设置里把字体改成了中文但代码编辑器里中文注释还是显示为方块我让他去检查系统是否安装了中文字体装完之后问题就消失了。这个问题其实和IDE没有关系是系统字体缺失。5.4 汉化之后需要避免的坑中文语言包不是没有代价的。装完之后有些菜单被翻译得和网上英文教程对不上如果你习惯对照英文教程查资料建议你在汉化后仍然保留对英文界面位置的了解或者直接记住设置项对应的英文名不然别人说“File - Settings”你却找不到“文件 - 设置”在哪里就尴尬了。另外某些第三方插件的汉化程度不完整界面可能是中英混杂的这不影响功能只是视觉上不统一。如果你实在不习惯中文翻译的某些术语比如“重构”对应Refactor可以暂时不去管它功能上不影响。我个人建议如果是新手中文界面确实能降低入门门槛如果你已经有一定经验还是尽量用英文界面因为国内外的教程、Stack Overflow回答绝大多数用英文术语后续阅读资料会少一层转换成本。6. 常见问题与排查技巧实录6.1 启动时报错或闪退怎么办Android Studio在Linux上启动失败或闪退最常见的三个原因是内存不足、显卡驱动问题、配置文件损坏。内存不足的典型表现是启动画面一闪而过或者IDE能开但过一会就崩。处理方法编辑安装目录下bin/studio.vmoptions把-Xmx参数调小例如改成-Xmx1536m减少堆内存占用。同时把-Xss降低一些比如-Xss512k这样对低内存的机器更友好。我自己的8GB内存开发机用的是-Xms512m -Xmx2048m -XX:MaxPermSize512m -XX:ReservedCodeCacheSize256m如果启动时白屏或界面渲染异常多半是显卡/GPU渲染问题。Bumblebee在部分Linux显卡驱动下默认开启GPU渲染会导致花屏、卡顿甚至闪退。解决方式是在启动时禁用GPU打开bin/studio.sh找到最后的启动命令加上./studio.sh -Djava.awt.headlessfalse -Dorg.eclipse.swt.internal.gtk.disableGraphicsAccelerationtrue或者更简单设置环境变量export LIBGL_ALWAYS_SOFTWARE1这样强制使用软件渲染虽然性能稍微打折但稳定性大幅提升。配置文件损坏一般发生在不正常关机的场景。如果你发现IDE启动后卡在欢迎界面或者设置丢失可以备份并删除配置文件目录让它恢复默认。Bumblebee的配置目录一般在~/.config/Google/AndroidStudio2021.1/清理前先备份因为里面包含你的IDE设置和插件信息。删除后重新启动IDE会重新生成默认配置。查看启动日志定位问题的路径Help - Show Log in Files或者直接看~/.cache/Google/AndroidStudio2021.1/log/idea.log。这个日志文件会记录启动过程中的异常堆栈是排查问题的第一手资料。6.2 Gradle同步缓慢或失败的排查Gradle同步慢是Linux以及Windows/macOS上Android Studio用户最头疼的问题。慢了还好说失败就麻烦了。这里我梳理几种常见情况和解法。如果是Gradle wrapper下载失败报错信息里通常有“Could not download Gradle”字样。处理方式很直接手动下载对应版本的Gradle压缩包放到Gradle wrapper缓存目录。先查看gradle-wrapper.properties里的distributionUrl得到版本号比如gradle-7.3.3-bin.zip然后从镜像站下载最后把它放到~/.gradle/wrapper/dists/gradle-7.3.3-bin/xxxx/下。那个xxxx是随机哈希你让IDE同步时会自动创建或者你先运行一次同步让目录出现再拷贝。如果是依赖库下载失败比如maven.google.com连不上那就要配置仓库镜像。打开项目根目录的build.gradleProject级别在allprojects的repositories或settings.gradle里的pluginManagement/repositories里添加阿里云镜像repositories { maven { url https://maven.aliyun.com/repository/google } maven { url https://maven.aliyun.com/repository/gradle-plugin } maven { url https://maven.aliyun.com/repository/public } google() mavenCentral() }注意顺序有影响镜像仓库要放在google()和mavenCentral()前面这样依赖优先从镜像拉取速度会明显快很多。此外Gradle的依赖缓存目录~/.gradle/caches越大构建速度越快但占用磁盘也多这个提前有心理预期。如果同步过程出现“Read timed out”这种网络超时你可以在gradle.properties里调大超时时间systemProp.org.gradle.internal.http.connectionTimeout180000 systemProp.org.gradle.internal.http.socketTimeout180000如果构建时内存不足把gradle.properties里的org.gradle.jvmargs调大一点比如org.gradle.jvmargs-Xmx2048m -XX:MaxMetaspaceSize512m6.3 KVM不可用导致模拟器无法运行模拟器是Android开发中故障率最高的环节之一。在Linux上模拟器起不来的首要原因就是KVM不可用。常见的报错信息有这些“/dev/kvm is not found”“This AVDs configuration is missing a kernel file”“x86_64 emulation currently requires hardware acceleration!”如果报错里提到KVM not found按前面说的检查BIOS虚拟化开关、安装qemu-kvm、把用户加入kvm组。如果还不行确认是否运行在虚拟机里比如你在VirtualBox里装了UbuntuUbuntu里再跑Android模拟器这种情况下需要开启嵌套虚拟化否则KVM不可用。KVM正常的情况下还要检查模拟器镜像架构。确保你选的System Image是x86_64而不是arm64。如果你在x86_64的电脑上选了arm64的系统镜像模拟器会非常慢甚至直接起不来。在SDK Manager里系统镜像通常有“x86_64”和“arm64-v8a”两个标签选x86_64。如果模拟器能启动但非常卡可以降低模拟器配置在AVD Manager里编辑设备配置把Internal Storage改为2GB把Memory和VM heap调低一些同时开启“Use Host GPU”选项这会显著提升流畅度。我这里也推荐一个排查技巧在终端里直接启动模拟器可以看到更详细的错误日志$ANDROID_HOME/emulator/emulator -avd 你的AVD名称 -verbose这样输出的日志比IDE里的更详细能帮你定位具体是哪里出问题。6.4 SDK组件下载失败与许可接受问题SDK组件下载失败除了网络原因外还有一个常被忽略的问题许可协议没有接受。首次从一个新环境下载SDK时命令行工具会要求你接受所有SDK License否则组件会被拒绝安装或下载到一半自动取消。接受许可的方法是$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses执行后一直输入y回车把出现的许可协议全接受。如果你没有cmdline-tools也可以在SDK Manager的图形界面里勾选“Accept licenses”然后点安装。如果下载组件总是失败可以在SDK Manager左下角的“SDK Update Sites”里取消勾选“Force http...”之类的选项或者把下载源改成国内镜像。Android SDK镜像有很多你可以在SDK Manager设置里添加一个可用的镜像源。不过我实际体验下来改镜像后SDK的兼容性有时候会有小问题建议在官方源能下载的情况下优先用官方。如果SDK组件下载到一半卡住删掉SDK目录里下载不完整的临时文件通常是.tmp或.part后缀然后重新下载。另外SDK Manager默认的下载线程数可能较少如果你网速不错可以在IDE的VM options里加-Djava.net.preferIPv4Stacktrue有时能改善。6.5 Linux权限问题导致编译失败Linux下编译报错“Permission denied”的情况比比皆是多半和文件所有者以及Gradle守护进程有关。如果你用了sudo启动Android Studio或者从网上下载的项目文件所有者是rootGradle编译时就会因为无法写入Gradle缓存或项目构建目录而失败。解决办法是把项目目录的所有者改成你自己sudo chown -R 你的用户名:你的用户组 /path/to/your/projectGradle守护进程Gradle Daemon有时会占用旧版本的缓存文件导致新构建异常。可以尝试关闭守护进程后重启./gradlew --stop ./gradlew --no-daemon clean build或者更彻底删掉Gradle缓存目录里的部分缓存~/.gradle/caches让它重新下载依赖。这个方法比较费时但能解决很多缓存损坏的问题。如果编译时提示“Android SDK location not found”这通常是local.properties文件缺失。Android Studio会生成一个local.properties文件里面包含sdk.dir/home/你的用户名/Android/Sdk如果没有就手动创建并指向你实际的SDK路径。注意这个文件不应该提交到Git仓库因为不同机器SDK路径不一样。6.6 关于HAXM的常见误解最后必须澄清一个经典误区很多从Windows转过来的开发者在Linux上找HAXM怎么装。HAXMIntel Hardware Accelerated Execution Manager是英特尔的硬件加速方案但它在Linux上并没有对应的版本。Linux下的硬件加速方案就是KVM它的作用类似于HAXM用来加速模拟器。所以如果你在Linux上手动添加HAXM或者看到网上教程让你去装HAXM SDK源那是给Windows用的Linux下直接忽略。这时候正确做法是确保KVM可用如果CPU是AMD的用的是SVM虚拟化KVM同样支持。这个误区很容易在写嵌入式Linux相关的开发环境时再次碰到因为很多人习惯同时开VMware、VirtualBox和Android Studio这几个虚拟化工具叠加起来对资源占用和嵌套虚拟化支持要求都很高。如果你在虚拟机里开发优先保证宿主机开启了“向虚拟机传递虚拟化指令”嵌套虚拟化选项然后虚拟机里的KVM才能正常工作。在Linux上用好Android Studio说到底就是把系统环境、SDK工具链、虚拟化加速这三层关系理顺。Bumblebee虽然老但它的稳定性在低配Linux机器上确实能打。我建议是先把SDK和KVM这两块环境完全调通再考虑升级新版本因为模拟器和构建流程的顺畅程度往往比IDE功能多少更能影响日常开发效率。最后分享一个我自己的习惯每次配置完新环境我会把studio.vmoptions、gradle.properties、基础SDK组件的清单都备份一份到文本文件里。这样下次换电脑或者重装系统照着清单重新配一遍比重新踩一遍坑快太多了。你如果也在Linux上长期写Android不妨也养个这样的习惯。本文还有配套的精品资源点击获取
返回列表