简介:Android Studio Bumblebee(android-studio-2021.1.1.22-linux)是面向 Linux 平台 Android 开发者的官方集成开发环境安装包,可视为 Android Studio 4.4 版本,于 2022 年 1 月发布稳定版、2 月推出 Patch 2。它适合需要升级旧版 IDE、搭建稳定编译调试环境的移动端开发者,尤其便于在 Linux 桌面完成项目构建、模拟器调试与性能分析。压缩包为 gz 格式,共约 2000 个文件,整体约 904.35MB,内含 1012 个 py 脚本、689 个 jar 库、250 个 json 配置、200 个 ttf 字体、164 个 webp 资源、131 个 so 动态库及大量 xml、layout、properties 等工程与界面文件,覆盖 IDE 运行所需的依赖、模板与工具链。目前已有 346 人学习下载。该版本集成 Gradle 插件升级、Compose 预览与性能剖析等能力,目录结构完整,解压即可在 Linux 上部署使用,适合作为日常开发与版本迁移的可靠工具。
1. 为什么 2021.1.1.22 这个 Linux 版本值得单独拿出来讲
Android Studio Bumblebee 是 2021 年 JetBrains 平台大版本里被低估的一个节点,对应构建号 2021.1.1.22,Linux 发行包文件名就是android-studio-2021.1.1.22-linux.tar.gz。它不像后来的 Dolphin、Electric Eel 那样被反复讨论,但恰恰是它把 Compose 预览、Layout Inspector 和 Gradle 版本对齐这几件事做稳了,很多还在维护老项目的团队至今把 Bumblebee 当作 Linux 开发机的基线版本。如果你手上是一台 Ubuntu、Debian 或者国产 Linux 发行版,想装一个不折腾、能直接跑通./gradlew assembleDebug的 Android Studio,这个包是绕不开的选项。它解决的核心问题很具体:在 Linux 上把 IDE、SDK、JDK、Gradle 四者的版本关系一次性理顺,而不是装完打开就报 SDK 找不到。适合谁?适合需要在 Linux 桌面长期做 Android 开发、又不想被最新版各种插件兼容问题反复折腾的从业者。
2. 在 Linux 上把 android-studio-2021.1.1.22 跑起来:从解压到首启
2.1 下载包与目录规划:别把 IDE 塞进家目录根下
Linux 上装 Android Studio 最常见的翻车点不是安装本身,而是目录规划。很多人习惯把 tar.gz 解压到~/下载或者~/android-studio,结果半年后想升级或者换版本,发现配置、SDK、缓存全缠在一起,删也不是留也不是。我一般会按职责分三层:IDE 本体放/opt,SDK 放用户目录下的独立路径,Gradle 缓存交给默认的~/.gradle。这样换 IDE 版本时只动/opt,SDK 和缓存完全不受影响。
# 假设安装包已经下载到 ~/Downloads cd ~/Downloads # 解压到 /opt,需要 sudo sudo tar -xzf android-studio-2021.1.1.22-linux.tar.gz -C /opt # 确认解压结果,正常会看到 /opt/android-studio ls -l /opt/android-studio/bin # 把启动脚本软链到 PATH,方便终端直接敲 studio.sh sudo ln -sf /opt/android-studio/bin/studio.sh /usr/local/bin/android-studio这段命令的逻辑很直白:tar -xzf解压 gzip 压缩包,-C /opt指定目标目录,避免污染当前路径。软链这一步是可选的,但强烈建议做,因为后面排查启动问题时你会频繁在终端里跑studio.sh看日志,有软链比每次敲全路径省事。参数上唯一要注意的是/opt需要 root 权限,如果你所在环境没有 sudo,退而求其次放到~/.local/opt也可以,只是后续所有路径都要跟着改。
2.2 首次启动前必须确认的 JDK 与内存参数
Bumblebee 这个版本内置了 JetBrains Runtime,理论上不依赖系统 JDK 就能启动 IDE 本身。但 Gradle 构建走的是另一套 JDK,如果你系统里只有 JDK 8,而项目用的是 AGP 7.x,构建阶段会直接报 “Unsupported class file major version”。所以首启之前,先确认系统 JDK 版本,我一般要求至少 JDK 11。
# 查看当前默认 JDK java -version # 如果系统装了多个 JDK,用 update-alternatives 切换 sudo update-alternatives --config java # 确认 JAVA_HOME 指向 JDK 11 或 17 echo $JAVA_HOMEjava -version输出里重点看版本号,11.0.x或17.0.x都可以,1.8.0就要警惕。update-alternatives --config java是 Debian 系管理多版本 JDK 的标准做法,会列出所有候选让你选编号。JAVA_HOME为空是常见现象,很多发行版默认不设,需要你在~/.bashrc或~/.zshrc里手动 export,否则 Gradle 有时会找不到 JDK。
内存方面,Bumblebee 默认的-Xmx是 2048m,跑中小项目够用,但一旦开 Compose 预览加多个模块,很容易 OOM。改法是在 IDE 的Help > Edit Custom VM Options里调整,或者直接改/opt/android-studio/bin/studio.vmoptions:
# 编辑 VM 参数,把堆内存提到 4G -Xmx4096m -XX:ReservedCodeCacheSize=512m-Xmx4096m是最大堆,机器内存 16G 以上可以放心给到 4G;ReservedCodeCacheSize控制 JIT 编译代码缓存,512m 对大型项目更稳。改完必须重启 IDE 才生效,这一点经常被忽略,改完发现没变化多半是没重启。
2.3 首次运行向导里 SDK 路径怎么选才不后悔
第一次启动会弹 Setup Wizard,核心就一件事:SDK 装哪。默认它会建议~/Android/Sdk,我建议接受默认,但如果你磁盘空间紧张,可以指到挂载的大盘上,比如/data/android-sdk。这里的关键是路径里不要有中文和空格,Linux 下虽然比 Windows 宽容,但 Gradle 脚本里路径带空格仍然会引发一堆引号问题,属于典型的血泪经验。
向导里还会问是否导入旧配置,如果是全新机器就选不导入。SDK 组件勾选上,Bumblebee 对应的是 Android 12(API 31)和 Android 11(API 30),再往下勾一个 API 29 做兼容测试基本够用。Build-Tools 选 30.0.3 或 31.0.0,这两个和 AGP 7.0/7.1 搭配最稳。装完向导会下载几百兆到 1G 左右的内容,国内网络环境下如果卡在 “Downloading SDK Component”,可以在 SDK Manager 里配置镜像源,或者手动下载对应组件放到 SDK 目录,这是另一个话题,后面避坑章节会展开。
3. 把项目从别的机器移植过来:Gradle、AGP 与 SDK 三方对齐
3.1 移植项目时先看这三个版本号
“移植 android studio 项目”是高频诉求,尤其是从 Windows 或者旧版 IDE 迁到 Linux 上的 Bumblebee。移植失败九成不是代码问题,而是三个版本号没对齐:Gradle Wrapper 版本、Android Gradle Plugin(AGP)版本、以及 compileSdk 对应的 Build-Tools。Bumblebee 官方推荐 AGP 7.1.x 配 Gradle 7.2 以上,这个组合在 Linux 上验证最充分。
打开项目根目录的gradle/wrapper/gradle-wrapper.properties,看distributionUrl那一行:
# 推荐与 Bumblebee 搭配的 Gradle 版本 distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip如果原来是 6.x,直接改成 7.2。改完不要急着 Sync,先看项目根build.gradle里的 AGP 声明:
// 项目根 build.gradle plugins { id 'com.android.application' version '7.1.2' apply false id 'com.android.library' version '7.1.2' apply false }AGP 7.1.2 是 Bumblebee 周期内的稳定版本,和 Gradle 7.2 是官方验证过的搭配。如果你原来用的是classpath 'com.android.tools.build:gradle:4.x'这种老写法,需要迁移到 plugins DSL,否则 Bumblebee 会提示弃用甚至直接报错。这一步是移植里最容易卡住的地方,因为报错信息往往只写 “Could not find method classpath”,不告诉你该换成 plugins 写法。
3.2 用命令行先跑通构建,再回 IDE
我的习惯是移植项目时先不开 IDE,直接在终端跑构建,因为命令行报错信息更完整,也排除了 IDE 索引的干扰。
# 进入项目根目录 cd /path/to/your/project # 给 gradlew 执行权限,从别的系统拷过来经常丢权限 chmod +x gradlew # 先只做配置阶段,不真正编译,快速暴露版本问题 ./gradlew tasks --stacktrace # 配置通过后再编译 debug 包 ./gradlew assembleDebug --stacktracechmod +x gradlew这一步看着傻,但从 Windows 或压缩包拷过来的项目,gradlew 经常没有执行权限,直接跑会报 “Permission denied”,新手容易以为是 Gradle 坏了。./gradlew tasks只走配置阶段,能快速验证 Gradle、AGP、仓库地址是否都通,比直接 assembleDebug 省时间。--stacktrace是排查必备,不加的话很多错误只显示一行摘要,加了才能看到根因。等命令行能出 APK 了,再用 IDE 打开,此时 IDE 的 Sync 基本不会出幺蛾子。
3.3 local.properties 与 SDK 路径的机器差异
从别的机器移植过来,local.properties里往往写着原机器的 SDK 路径,比如sdk.dir=/Users/xxx/Library/Android/sdk,在 Linux 上直接失效。这个文件不应该进版本控制,但现实中经常被误提交。
# local.properties,路径改成你 Linux 上的实际 SDK 位置 sdk.dir=/home/yourname/Android/Sdk改完这个文件,IDE 才能找到 SDK。如果项目里没有这个文件,Android Studio 打开时会自动生成,但有时生成的是错的,手动确认一遍最保险。另外local.properties里不要写ndk.dir,Bumblebee 已经改用ndkVersion在 build.gradle 里声明,写老字段会触发警告。
4. 避坑与排查:Linux 上跑 Bumblebee 最常见的五类问题
4.1 首启卡在 “unable to access android sdk add-on list”
现象:第一次打开 IDE,向导还没出来就弹窗提示无法访问 SDK add-on list,然后卡住或者只能选 Cancel。
原因:这是首次运行时 IDE 尝试联网拉取 SDK 附加组件列表,网络不通或者被拦截就会卡。这个报错在热词里也出现过,属于 Bumblebee 及相邻版本的经典问题。
解决:在弹窗界面直接选 Cancel,进入 IDE 后手动打开 SDK Manager 配置组件。或者在/opt/android-studio/bin/idea.properties里加一行disable.android.first.run=true,跳过首次联网检查,之后手动配 SDK。这个开关是后悔药级别的存在,建议装完就加上。
4.2 Gradle Sync 报 “Could not resolve com.android.tools.build:gradle”
现象:Sync 阶段红字,提示无法解析 AGP 依赖。
原因:仓库地址没配全,或者网络访问 Google Maven 仓库受限。Bumblebee 默认走google()和mavenCentral(),但老项目可能只写了jcenter(),而 jcenter 已经停服。
解决:在settings.gradle的dependencyResolutionManagement里确认仓库列表包含google()和mavenCentral(),删掉jcenter()。如果是网络问题,配置国内镜像仓库,把google()替换成对应的镜像地址。注意镜像地址要写在最前面,Gradle 按顺序查找。
4.3 中文显示成方块或输入法候选框错位
现象:IDE 界面中文变成方块,或者在 Linux 输入法下候选框飘到屏幕角落。
原因:系统缺少中文字体,或者 IDE 用的 JBR 与输入法框架(fcitx/ibus)配合有问题。这是 Linux 桌面环境的通病,不是 Bumblebee 独有。
解决:先装中文字体,sudo apt install fonts-noto-cjk基本能解决方块问题。输入法候选框错位,在 IDE 的Help > Edit Custom VM Options里加-Drecreate.x11.input.method=true,重启 IDE。如果还不行,确认输入法环境变量GTK_IM_MODULE、QT_IM_MODULE、XMODIFIERS在启动 IDE 的 shell 里已经 export,从桌面图标启动和从终端启动的环境变量可能不一致,这也是玄学来源之一。
4.4 构建时 OOM 或 Gradle Daemon 反复崩溃
现象:./gradlew assembleDebug跑到一半报Java heap space或者 daemon 消失。
原因:Gradle 默认堆内存偏小,大型项目或者开了多个模块时不够用。
解决:在项目根目录的gradle.properties里调大:
# Gradle 构建进程堆内存 org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m # 开启并行构建和缓存 org.gradle.parallel=true org.gradle.caching=true-Xmx4096m给构建进程,MaxMetaspaceSize控制元空间,parallel和caching能明显提速。注意这个值和 IDE 自身的-Xmx是两回事,两个都要调,只调一个还是会崩。
4.5 文件权限与 SELinux 导致的诡异读写失败
现象:项目能编译,但运行时报无法写入某个目录,或者 SDK 组件装不上。
原因:Linux 下/opt下的 IDE 目录属主是 root,IDE 尝试往安装目录写东西时权限不足;或者发行版开了 SELinux/AppArmor 拦截。
解决:不要把 SDK 或项目放在/opt/android-studio里面,SDK 放用户目录。如果确实遇到 SELinux 拦截,用getenforce确认状态,临时用setenforce 0验证是否是它导致,确认后配置对应策略而不是长期关闭。权限问题用ls -l看属主,必要时chown -R $USER:$USER修正用户目录下的文件。
5. 让 Bumblebee 在 Linux 上真正顺手:几个我长期保留的习惯
装好只是开始,能不能长期顺手取决于几个细节。第一个习惯是把 SDK 命令行工具单独管起来。Bumblebee 自带的 SDK Manager 是图形界面,但批量装组件、写脚本时,sdkmanager命令行更高效。在~/Android/Sdk/cmdline-tools/latest/bin下有sdkmanager,把它加进 PATH,之后装 Build-Tools 就是一行命令:
# 列出已安装和可安装的组件 sdkmanager --list # 安装指定 Build-Tools 和平台 sdkmanager "build-tools;31.0.0" "platforms;android-31"--list会区分 “Installed packages” 和 “Available Packages”,装之前先确认版本号存在。sdkmanager装组件时会自动接受 license,如果卡在 license 确认,加--licenses先统一接受一遍。这个工具在 CI 环境里也是同一套用法,本地练熟了,写流水线时直接复用。
第二个习惯是给每个项目固定 JDK。系统默认 JDK 可能被其他工具改来改去,项目级固定最稳。在gradle.properties里可以指定:
# 指定项目使用的 JDK 路径 org.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64org.gradle.java.home只影响 Gradle 构建用的 JDK,不影响 IDE 自身。这样即使系统默认 JDK 被切成 8,项目构建仍然走 17。路径要用update-alternatives --list java查出来的真实路径,不要写软链路径,某些发行版下软链会导致 Gradle 识别失败。
第三个习惯是定期清理 Gradle 缓存。Linux 下~/.gradle/caches会随着项目增多膨胀到几十 G,磁盘满了之后构建报错往往很隐晦。我一般每月清一次超过 30 天没访问的缓存:
# 查看缓存占用 du -sh ~/.gradle/caches # 清理 30 天未访问的缓存文件 find ~/.gradle/caches -type f -atime +30 -deletedu -sh先看总量,心里有数再清。find的-atime +30按访问时间筛选,比直接删整个 caches 温和,不会导致下次构建全部重新下载。这个操作我踩过的坑是:清理时 IDE 正在运行,删到一半文件被占用,导致缓存索引损坏,下次 Sync 报一堆莫名其妙的错。所以清理前一定关掉 IDE 和所有 Gradle daemon,用./gradlew --stop停掉守护进程再动手。
最后一个习惯是保留一份可复现的环境记录。Linux 发行版、JDK 版本、SDK 组件版本、Gradle 版本,这四个信息写进项目 README 或者一个env.md,换机器或者半年后回来,照着装一遍就能复现。我吃过最大的亏就是隔了几个月重装环境,忘了当时用的是哪个 Build-Tools,结果构建行为对不上,排查了大半天。现在每个项目根目录都放一份环境快照,几行字的事,省下的是实打实的时间。希望帮到你。
本文还有配套的精品资源,点击获取