☰
Ubuntu搭建安卓开发环境:从SDK配置到模拟器调试全攻略
2026/9/30 10:36:11 网站建设 项目流程

想在 Ubuntu 上装一套安卓开发环境,说难不难,说简单也真有一堆坑等着你。尤其是刚从 Windows 切过来的朋友,第一反应通常是“下载 Android Studio 解压就能用了吧”,结果装上之后发现 SDK 路径不对、模拟器起不来、adb 连不上手机、Gradle 卡在下载依赖那一步,一个下午就这么没了。

这篇文章就把我这些年在新装 Ubuntu 机器上搭安卓开发环境的完整流程、踩坑记录和配置思路一次讲清楚。不管你是刚接触 Linux 的新手,还是已经在 Windows 上写过几个 App、想换到 Ubuntu 做主力开发的老手,照着这套流程走,基本上能绕开我踩过的绝大多数坑。我会从系统准备、本体安装、SDK 与环境变量、模拟器与真机调试、常见问题这几个维度逐层拆开,每一步我都会解释“为什么这么做”,而不只是甩给你一条命令。

1. 环境准备:先把地基打牢,别急着下载 Android Studio

1.1 系统版本与桌面环境的选择思路

Ubuntu 官方支持的长期支持版本(LTS)是首选,目前主流的 20.04、22.04、24.04 都没问题。如果你只是用来写代码,我更建议用 22.04 或 24.04,原因很简单:Android Studio 新版本对较新系统的 GLIBC、OpenSSL 等底层库依赖更友好,某些新特性(比如新版模拟器对 Vulkan 的支持)在旧系统上需要折腾额外的驱动。

桌面环境方面,默认的 GNOME 就能干活,但我个人的实际体验是:如果机器配置一般(8GB 内存以下),GNOME 的内存占用会挤压 Android Studio 和模拟器的空间。这种情况下与其纠结“精简桌面”,不如直接把 Ubuntu 的 GNOME 优化一下,关掉动画、减少后台服务,效果立竿见影。装完系统后先执行一遍系统更新,把内核和显卡驱动都升到当前版本,这一步能避免很多模拟器渲染相关的诡异问题。

1.2 安装基础依赖:这些库不装,后面必出幺蛾子

Android Studio 本体虽然下载下来是个 tar.gz,但它本质上是 JetBrains 的 JVM 桌面应用,还牵扯到一堆图形库、USB 设备通信库和编译工具链。我整理了一份依赖清单,在干净的 Ubuntu 上先装好再继续:

sudo apt update && sudo apt upgrade -y sudo apt install -y openjdk-17-jdk unzip wget curl \ libc6:i386 libncurses5:i386 libstdc++6:i386 \ lib32z1 lib32ncurses6 lib32stdc++6 \ libx11-6 libx11-6:i386 libpulse0 libpulse0:i386 \ libgl1-mesa-glx libgl1-mesa-glx:i386 libgl1-mesa-dri \ libxcursor1 libxrandr2 libxss1 libxtst6 \ adb fastboot

这里几类库分别解决什么问题,我说一下,免得你觉得这是在乱装:

  • libc6:i386、lib32z1、lib32stdc++6这一类 32 位库,是给模拟器和某些老的构建工具用的。Android 模拟器虽然通常是 64 位进程,但它内部继承了 32 位组件,缺了这些库,模拟器要么起不来,要么起来之后黑屏、闪退。
  • libpulse0是音频库,不装的话模拟器里没声音,而且某些模拟器版本会因为没有音频后端直接崩溃。
  • adb和fastboot虽然 Android Studio 会自带一份 platform-tools,但系统级装一份,可以避免以后你在命令行里敲adb提示 command not found。SDK 里的 adb 和系统 adb 版本不一致时,记得统一用 SDK 里的,后面调试章节会细说。
  • openjdk-17-jdk是给老的 Gradle 构建脚本用的。注意,新版 Android Studio 自带的 JBR(JetBrains Runtime)完全能满足编译需求,系统 JDK 主要是在命令行跑 Gradle 或某些第三方工具时会用到,装上没坏处。

注意:不要装 OpenJDK 18 以上版本做默认 JDK。某些构建插件对 JDK 版本敏感,用 17 最稳。Android Studio 内可以单独配置 Gradle JDK,那个反而是推荐优先用自带的 JBR。

1.3 判断机器是否支持模拟器加速

模拟器属于“用时方恨慢”的东西,CPU 虚拟化支持直接决定了你的开发体验。AMD 的 SVM 和 Intel 的 VT-x 必须在 BIOS 里开启。开机进 BIOS 找Virtualization Technology或SVM Mode,Open 之后保存重启。这是硬件层面的前提,系统里怎么配置都替代不了。

进系统后验证一下:

egrep -c '(vmx|svm)' /proc/cpuinfo

如果输出为 0,说明 CPU 虚拟化没开或被 Hypervisor 占用了;输出大于 0 说明 CPU 没问题。接着装 KVM 相关组件,并检查kvm-ok的输出:

sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager kvm-ok

输出KVM acceleration can be used就说明模拟器可以走硬件加速。注意执行完后,要把当前用户加入kvm和libvirt组,否则模拟器打开时仍可能报权限不足:

sudo usermod -aG kvm $USER sudo usermod -aG libvirt $USER newgrp kvm

2. Android Studio 本体安装:解压版、命令行、Snap 三种方式的取舍

2.1 为什么不推荐 Snap 版本

Ubuntu 软件商店里直接搜 Android Studio,一键安装确实方便,但用 Snap 版做安卓开发,你大概率会遇到两个非常别扭的问题:

第一,Snap 的沙箱机制对文件系统的访问有隔离,你在工程里用File > Open打开位于/home之外或某些挂载目录下的项目时,会莫名报权限错误,或者目录显示为空。第二,模拟器需要访问/dev/kvm和 USB 设备,Snap 版对这些设备节点的访问经常需要额外的手动授权,新手很难一次搞定。

而且 Snap 版升级是自动后台的,如果新版 Android Studio 有兼容问题,你连锁版本的机会都没有。所以我的建议很明确:如果你追求稳定可控,直接下载官方 tar.gz 解压到/opt,用命令行启动或创建桌面快捷方式。

2.2 官方版本下载与解压目录规划

打开 Android Studio 官方下载页面(developer.android.com/studio),选择 Linux 版本的 tar.gz 包。下载的时候注意文件名里的版本号,目前主流稳定版本的命名规律是android-studio-XXXX.XX.XX-linux.tar.gz,大小在 1GB 左右。

下载完成后,规划解压目录。我一直用的是/opt下创建android-studio目录,这样所有用户都能访问,避免个人目录权限混乱:

sudo tar -xzf android-studio-*-linux.tar.gz -C /opt/

解压后,/opt/android-studio/bin目录下会有一个studio.sh脚本,这就是 Android Studio 的启动入口。第一次启动建议直接在终端执行,方便看日志:

/opt/android-studio/bin/studio.sh

如果你希望在任何目录下都能直接敲studio命令启动而不是敲一长串路径,做一个软链接到/usr/local/bin即可:

sudo ln -s /opt/android-studio/bin/studio.sh /usr/local/bin/studio

2.3 创建桌面快捷方式与图标修复

终端启动没问题之后,为了平时使用方便,建议在应用菜单里加上 Android Studio 的入口。新建一个桌面文件:

[Desktop Entry] Name=Android Studio Comment=Android Development IDE Exec=/opt/android-studio/bin/studio.sh Icon=/opt/android-studio/bin/studio.png Terminal=false Type=Application Categories=Development;IDE; StartupWMClass=jetbrains-android-studio

保存为~/.local/share/applications/android-studio.desktop,然后执行:

chmod +x ~/.local/share/applications/android-studio.desktop

这里有个细节:StartupWMClass这一行必须写对,否则你在 GNOME 的任务栏上会看到两个图标,一个是你点击的 Android Studio,另一个是启动后真实的窗口,很影响观感。

实操心得:如果你用 Wayland 会话,某些 NVIDIA 驱动版本会导致 Android Studio 的窗口出现花屏或鼠标拖动残影。解决办法是编辑/opt/android-studio/bin/studio.vmoptions,在文件末尾加上-Dsun.java2d.opengl=true,或者干脆切回 Xorg 会话。我实测两种方式都有效,具体选哪个看你的显卡驱动是否支持 OpenGL 后端。

2.4 首次启动配置:SDK 位置与组件选择

第一次启动 Android Studio 会进入 Setup Wizard,这个流程通常需要联网,因为它要从 Google 服务器拉取 SDK 组件。如果你所在网络访问官方源比较慢,这里就是第一个容易卡死的地方。

Wizard 里会让你选择 SDK 组件的安装位置和要安装的组件。默认情况下 SDK 会放在~/Android/Sdk,这个路径没问题,建议保留。组件层面,基础安装必须包含三样:

  • Android SDK Platform-Tools:提供 adb、fastboot 等核心调试命令
  • Android SDK Build-Tools:提供 aapt2、zipalign、d8 等构建工具
  • 某个版本的Android SDK Platform:比如Android 14 (API 34),这是编译 targetSdk 时的基础

不要一开始把所有组件全部勾选,比如系统镜像(System Images)占空间极大,等你真正需要模拟器的时候再单独下载不迟。Wizard 卡在 “Downloading SDK Components” 或 “Installing SDK” 阶段很久,大概率是网络问题。这时候可以先关掉 Wizard,手动配置代理或用国内镜像源,方法见后面第四章节。

3. 核心配置:SDK、环境变量与开发体验打磨

3.1 环境变量到底该怎么配

Android 开发相关的环境变量主要有三个:ANDROID_HOME、ANDROID_SDK_ROOT和PATH里加 platform-tools。ANDROID_HOME是老规矩,ANDROID_SDK_ROOT是更新一点的规范,两者指向同一个目录,建议都写上,兼容各种工具链。

打开配置文件:

vi ~/.bashrc

在末尾追加:

export ANDROID_HOME=$HOME/Android/Sdk export ANDROID_SDK_ROOT=$HOME/Android/Sdk export PATH=$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator

保存后执行:

source ~/.bashrc

验证是否生效:

adb --version

能输出版本信息就说明环境变量没问题。如果你用的是 zsh,记得改~/.zshrc,别配错文件了。

注意:环境变量里不建议把cmdline-tools的 bin 目录加进 PATH,因为 cmdline-tools 里有个sdkmanager,它的执行依赖相对路径,直接放 PATH 里容易出问题,需要用的时候敲全路径或进目录执行更好。

3.2 设置中文字体与代码字体:Windows 用户最关心的一环

Ubuntu 上安卓开发,字体问题几乎是每个从 Windows 或 macOS 转过来的人都会吐槽的点。中文显示这块,系统自带的中文字体在 IDE 的代码区、控制台输出里经常显示成方框或者笔画发虚,很影响心情。

先解决系统层面的中文显示。安装 Noto Sans CJK 字体,这是 Google 和 Adobe 联合开发的标准中文黑体:

sudo apt install -y fonts-noto-cjk

然后在 Settings > Appearance 里把字体设置为Noto Sans CJK SC,再勾选 “Antialiasing: Subpixel”,中文渲染会舒服很多。

代码字体方面,如果你习惯了 macOS 上那种等宽字体体验,Android Studio 里我比较推荐 JetBrains Mono。它本身就是 JetBrains 家的 IDE 默认字体,和 Android Studio 的渲染引擎配合最默契,英文和符号的可读性都很高。下载 JetBrains Mono 的 zip 包,解压后双击.ttf文件,点 “Install Font” 即可。然后在 Settings > Editor > Font 里选择JetBrains Mono,字号设 14 或 15,行间距 1.2 左右,写代码时的视觉疲劳能明显降低。

3.3 Gradle 构建加速:不要使用默认仓库硬扛

安卓工程构建时,Gradle 要从 Maven 仓库拉取大量依赖(AndroidX、第三方库、Kotlin 插件等)。默认仓库是 Google 和 Maven Central,在国内网络环境下经常慢到让人怀疑人生。明明几 KB 的东西,能卡几分钟。

解决办法是配置国内镜像仓库。全局配置方式是在用户目录下创建~/.gradle/init.gradle文件,内容如下:

allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/central' } 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' } } }

这样所有工程都会自动走阿里云的镜像,下载速度提升非常明显。如果你用的公司网络屏蔽了部分外网域名,还可以在~/.gradle/gradle.properties里加上一行:

systemProp.http.proxyHost=你的代理IP systemProp.http.proxyPort=你的代理端口

不过我个人不推荐全局代理配置,因为一旦代理失效,Gradle 会直接报连接超时,排查起来反而麻烦。镜像方案更干净,只在仓库层面替换,不影响其他网络请求。

4. 模拟器与真机调试:跑起来才能算环境就绪

4.1 创建与优化模拟器(AVD)

Android Studio 里点击右上角带手机图标的 Device Manager,点击 “Create device”,选择一个硬件模板(比如 Pixel 6)。然后选系统镜像,这里要特别注意:如果 API 34 以上的最新镜像下载太慢,可以选 API 30 或 31 的镜像,开发调试完全够用,启动速度反而更快。

镜像下载完成、创建 AVD 时,有几个参数值得调整:

  • Graphics:选择 “Hardware - GLES 2.0”,走 GPU 加速。如果你的机器是 NVIDIA 独显,记得先在 Ubuntu 上装好官方驱动,否则这里即使选了硬件加速,模拟器也会退化成软件渲染,画面卡顿到无法接受。
  • Device Frame:不需要的话关掉,能省一点渲染开销。
  • Startup orientation:默认竖屏就行。

首次启动模拟器会比较慢,因为要初始化用户数据分区。如果启动过程中卡在黑屏或者一直显示 “Android” 字样,大概率是 KVM 没生效。回到终端跑一下:

ls -l /dev/kvm

如果你的用户不在kvm组,这里会提示权限不够,按第一章节的方法加组即可。

4.2 模拟器加速的关键参数:RAM、CPU 与快照

模拟器的响应速度由几个因素决定。/opt/android-studio/bin/studio.sh启动时,Gradle 和模拟器会抢内存,所以我建议在 AVD 配置里把模拟器的 RAM 设为 2GB 或 3GB,CPU 核数设为宿主逻辑核心数的一半以下,别贪心全给,否则宿主机卡顿会导致 IDE 操作延迟,开发体验反而变差。

还有一个容易忽略的点:AVD 的 “Quick Boot” 功能。默认开启,关闭模拟器时它保存一个快照,下次启动直接加载快照,几秒就能恢复。如果这个功能导致你改了系统配置后模拟器状态不对,可以在模拟器侧边栏点 “Cold Boot Now” 冷启动一次。

4.3 USB 真机调试:Ubuntu 上连安卓手机的完整流程

真机调试比模拟器更贴近真实环境,而且不耗 CPU。但 Ubuntu 上连安卓手机,比 Windows 多一道步骤:配置 udev 规则。否则手机会显示离线,或者adb devices看到的设备状态是unauthorized。

首先,把手机插入电脑,在手机开发者选项里开启 “USB 调试”。然后执行:

lsusb

输出里找到你的手机厂商 ID。比如小米是2717,华为是12d1,三星是04e8,一加(Oppo)是22d9。不同机型 ID 不同,这一步必须自己查。

然后创建 udev 规则文件:

sudo vi /etc/udev/rules.d/51-android.rules

内容格式如下:

SUBSYSTEM=="usb", ATTR{idVendor}=="2717", MODE="0666", GROUP="plugdev"

把2717换成你设备实际的 idVendor,保存后执行:

sudo chmod a+r /etc/udev/rules.d/51-android.rules sudo udevadm control --reload-rules sudo udevadm trigger

重新插拔手机,再执行:

adb kill-server adb start-server adb devices

手机上弹窗里点 “允许 USB 调试”,终端里就能看到设备状态变为device,表示连接成功。

4.4 无线调试:不插线也能跑 adb 的配置方法

安卓 11 及以上系统支持无线调试,Ubuntu 下配置也非常简单。先保证手机和电脑在同一局域网,手机连上 Wi-Fi。手机开发者选项里找到 “无线调试”,开启后进去有个 “使用配对码配对设备” 的入口。

先记录手机无线调试界面显示的 IP 地址和端口,然后在终端执行:

adb pair 192.168.x.x:配对端口

输出提示输入配对码,输入手机端显示的 6 位数字,配对成功后执行:

adb connect 192.168.x.x:连接端口

这里的 “连接端口” 通常是无线调试主界面上显示的端口号。执行完再adb devices,就能看到设备了。无线调试适合在 USB 口不够用或者频繁拔插数据线的场景,但注意休眠时连接可能断开,重连一下就行。

5. 高频问题与排错实录:花了整个下午才总结出来的经验

5.1 Gradle 卡在下载依赖或构建超时

这是所有 Ubuntu 新手最常遇到的,几乎十个人里有八个会在这卡住。现象是打开工程后,Gradle 同步卡在某个百分比,或者构建时一直显示Could not resolve org.jetbrains.kotlin:kotlin-stdlib之类的错误。

排查顺序先看网络。确认是否能访问 dl.google.com 和 repo.maven.apache.org,如果慢或超时,直接应用第三章节的阿里云镜像方案。如果镜像也慢,还有一种可能是 Gradle Wrapper 分发包本身下载失败。检查工程里gradle/wrapper/gradle-wrapper.properties的 distributionUrl,手动用浏览器下载对应版本的 gradle zip 包,放到~/.gradle/wrapper/dists/下对应哈希目录里,重新同步即可绕过网络问题。

5.2 环境变量配置错误导致命令崩溃

环境变量配置是 Ubuntu 开发里非常容易“一波带走”的操作。如果你在~/.bashrc里改 PATH 时不小心写错路径,比如把$PATH覆盖了,可能导致ls、cat等基础命令都找不到。

遇到这种情况别慌,新开的终端输入一行恢复最小 PATH:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

然后重新打开~/.bashrc修正错误,source ~/.bashrc即可恢复。这个坑我当年踩过一次,后来凡是改环境变量都先备份:

cp ~/.bashrc ~/.bashrc.bak

改坏了直接还原,一分钟解决。

5.3 adb 提示 no permissions 或设备 offline

adb devices显示no permissions (user in plugdev group; are your udev rules wrong?),说明 udev 规则没生效,或者插上手机的时候 adb 服务已经在权限错误的状态下运行了。按前面第四章节重刷规则后,记得adb kill-server再adb devices。

设备状态是offline,通常是因为 adb 版本不匹配。电脑上有系统 apt 装的 adb,和 SDK 里的 adb 版本不一致时,来回切换后可能导致协议握手失败。解决办法是统一使用$ANDROID_HOME/platform-tools/adb,可以给这个路径做个软链接覆盖系统 adb:

sudo ln -sf $ANDROID_HOME/platform-tools/adb /usr/bin/adb

5.4 模拟器启动后黑屏或一直加载

黑屏基本先查 GPU 渲染和 KVM。确认kvm-ok输出正常后,在 AVD 配置里把 Graphics 改成 “Software - GLES 2.0” 试一次。如果软件渲染能起来,说明显卡驱动有兼容问题,回第四章节处理驱动。

还有一种情况是模拟器窗口起来了,但显示的是竖屏的锁屏界面,看起来像黑屏。拖动一下窗口或按一下键盘,有时候只是分辨率太高、渲染延迟导致显示区没刷新。

5.5 中文输入法在 Android Studio 里无法使用

Ubuntu 上开 Android Studio 输入中文,在输入框里候选词弹不出来,是不少用搜狗输入法或 ibus 的朋友遇到过的共性问题。

如果是 ibus,在~/.bashrc里加上两行环境变量可能就解决了:

export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibus

然后重启 Android Studio。如果是搜狗输入法,确认它的框架是 fcitx,同样把上面ibus替换成fcitx。这个问题的根源在 GTK 和 Qt 程序加载输入法模块的方式不同,Android Studio 基于 JVM,有时需要额外的-Djava.awt.im.style=on-the-spot参数,在studio.vmoptions里加上这个参数再试。

5.6 常见问题速查表

问题现象可能原因快速解法
模拟器无法启动,报 KVM 错误CPU 虚拟化未开启或用户不在 kvm 组BIOS 开启 VT-x/SVM,执行sudo usermod -aG kvm $USER
adb 找不到设备udev 规则未配置按 4.3 章节创建 51-android.rules 并 reload
Gradle 同步卡死默认仓库访问慢使用阿里云镜像 init.gradle
中文显示为方块缺少 CJK 字体sudo apt install fonts-noto-cjk
桌面快捷方式图标无法显示缺 Icon 路径权限检查 studio.png 存在且权限可读
打开工程报 SDK 未找到ANDROID_HOME 未配置设置环境变量并 source
Simulator 黑屏花屏GPU 渲染兼容问题改为 Software GLES 2.0 或更新显卡驱动
无线调试连不上端口变化或设备休眠重新确认无线调试页面的端口并 adb connect

6. 收尾:一些关于开发机配置的个人体会

整套环境搭好之后,我一般会再做两件事。第一,把~/.gradle/init.gradle和~/.bashrc这两个文件备份到自己的私有仓库里,下次重装系统或者换机器,执行一遍脚本,整个安卓开发环境十分钟就能恢复。第二,装一个htop,平时开发时留意一下 CPU 和内存占用,如果 Gradle 构建时内存使用率长期接近满载,直接加内存条比任何软件优化都管用。

最后再分享一个小技巧:Android Studio 自带的 JBR 和你的系统 JDK 版本如果冲突,导致某些工程构建报 “Unsupported class file major version”,别急着降级系统 JDK,优先在Settings > Build Tools > Gradle > Gradle JDK里切换到项目需要的 JDK 版本,这样更干净,也不影响其他工程。开发环境这种东西,一旦配好就不要频繁折腾,稳定压倒一切。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询