运行与调试应用
本教程共 100 篇 · 第 8 篇 · 更新于 2026-07-28 · 约 8 分钟阅读
8. 运行与调试应用
本节目标:学会创建模拟器、连真机、看日志、打断点调试,让应用能在设备上跑起来,出问题能查到原因。
运行应用的方式
Android 应用跑在哪?三种选择:
- AVD 模拟器:电脑上虚拟一台 Android 设备,不用真机。
- 真机(USB / Wi-Fi):连自己的手机调试,最贴近真实环境。
- 云设备:Firebase Test Lab 之类,跑自动化测试用,本节不展开。
日常开发模拟器 + 真机配合用:模拟器方便快速验证,真机验证实际体验。
一、创建 AVD 模拟器
第 1 步:打开 Device Manager
Toolbar 点手机图标,或菜单 Tools -> Device Manager。右侧弹出面板,点 +(或 “Create Device”)。
第 2 步:选硬件
Select Hardware 页面选设备型号。常用:
- Pixel 7 / Pixel 8:主流手机尺寸,适合测手机应用。
- Pixel Tablet:测大屏。
- 选分辨率和密度合理的,别选太大屏的,模拟器吃显存。
点 Next。
第 3 步:选系统镜像
System Image 页面选 Android 版本。推荐:
- API 36(Android 16):跟教程基准一致。
- 选 x86_64 架构(比 arm 快很多)。
- 想测 Google Play 功能选 Google Play 镜像,否则 Google APIs 就够。
没下载过的镜像旁边有下载图标,点一下下载(几百 MB),下完后选中,Next。
第 4 步:配置 AVD
Verify Configuration 页面:
- AVD Name:起个好记的名字,比如
Pixel7_API36。 - Startup orientation:Portrait(竖屏)或 Landscape(横屏)。
- Advanced Settings:可以调 RAM(建议 2048MB 起)、内部存储、SD 卡等。
点 Finish 完成。
第 5 步:启动模拟器
Device Manager 里点 AVD 旁边的三角形启动。第一次启动慢一点,之后会快。启动成功后模拟器窗口出现,就能用了。
Tip模拟器卡死或异常时,长按启动按钮选 Cold Boot Now 冷启动,或 Wipe Data 清数据重置。
二、连接真机调试
真机调试比模拟器更真实,强烈建议至少准备一台真机。
开启开发者选项
- 手机
设置->关于手机。 - 连续点 7 次 版本号(或 “软件版本信息”),提示「您已处于开发者模式」。
- 返回设置,找到
开发者选项(有的系统藏在「系统」->「开发者选项」)。
开启 USB 调试
- 开发者选项里打开 USB 调试。
- 用数据线连电脑(注意数据线要能传数据,不是纯充电线)。
- 手机弹「允许 USB 调试吗?」点允许,勾选「一律允许」。
验证连接
命令行敲:
adb devices
输出类似这样就连上了:
List of devices attached
1234567890abcdef device
Android Studio 顶部设备下拉框里也能看到你的手机型号。
Warning连不上常见原因:数据线只能充电(换线)、没装驱动(Windows 上某些品牌要装 OEM USB 驱动)、USB 模式不对(手机通知栏切到「文件传输 MTP」)。
adb kill-server然后重连有时能解决玄学问题。
无线调试(Android 11+)
Android 11 起支持无线调试,不用数据线:
- 开发者选项 -> 无线调试 打开。
- 点「使用配对码配对设备」,记下 IP、端口和配对码。
- 电脑命令行:
adb pair 192.168.1.100:42351 # 输入配对码 adb connect 192.168.1.100:5555 - Android Studio 设备列表里就能看到。
三、运行应用
顶部工具栏:
- 选模块(默认
app)。 - 选设备(模拟器或真机)。
- 点绿色三角 Run(
Shift+F10)。
Android Studio 编译、打包、安装、启动应用,设备屏幕上出现你的应用界面就成功了。
四、用 Logcat 看日志
应用跑起来后,底部 Logcat 面板是看日志的核心。
打日志
Kotlin 里用 android.util.Log:
import android.util.Log
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Log.d("MainActivity", "onCreate 被调用了")
Log.i("Network", "开始请求接口")
Log.w("Cache", "缓存已过期")
Log.e("MainActivity", "发生错误:${someException.message}", someException)
}
}
日志分级别:
| 方法 | 级别 | 用途 |
|---|---|---|
Log.v | Verbose | 啰嗦细节,一般不开 |
Log.d | Debug | 调试信息,最常用 |
Log.i | Info | 重要事件(启动、登录成功) |
Log.w | Warn | 警告,不致命 |
Log.e | Error | 错误,带异常堆栈 |
筛选日志
Logcat 默认输出所有应用和系统的日志,会刷屏。几种过滤方式:
- 顶栏选设备 + 进程:只看当前应用进程。
- 日志级别下拉:选 Info 只看 Info 以上。
- 搜索框:
tag:MainActivity按 tag 过滤。package:mine只看自己应用。level:error只看错误。- 组合:
tag:MainActivity & level:debug。
Tip应用崩溃时,Logcat 里搜
FATAL EXCEPTION或看红色 Error 行,能直接定位到崩溃堆栈和代码行。
五、断点调试
光看日志不够,要一步步看变量变化就得上断点调试。
打断点
编辑器里点行号左边的灰色区域,出现红点就是断点。程序运行到这行会暂停。
调试运行
不用 Run,改用 Debug 按钮(虫子图标,Shift+F9)。程序启动后到断点处暂停,底部出现 Debug 面板。
Debug 面板
- Frames:当前调用栈,能看到执行到哪个方法、上层调用是谁。
- Variables:当前作用域所有变量的值,可以展开看对象内部。
- Watches:手动添加要监视的表达式。
控制按钮:
- Step Over(
F8):执行当前行,不进入方法内部。 - Step Into(
F7):进入方法内部(自己写的方法)。 - Force Step Into(
Alt+Shift+F7):进入任何方法(包括系统库)。 - Step Out(
Shift+F8):跳出当前方法,回到调用处。 - Resume(
F9):继续运行到下一个断点。
Note调试时变量值直接显示在代码行右边(内联调试),不用专门看 Variables 面板也能看个大概。
条件断点
右键断点红点,能设条件。比如循环里只想在 i == 50 时停,写 i == 50,其他时候自动跳过。调试循环神器。
计算表达式
暂停时点 Evaluate Expression(计算器图标),能临时跑一段代码看结果,比如:
list.size
someObject.calculateSomething()
不影响程序状态,调试时验证想法很方便。
六、常见运行问题
应用装不上:INSTALL_FAILED
可能原因:包名冲突(设备上已装同包名应用,签名不同)、存储空间不足、targetSdk 不满足 Google Play 要求。看 Logcat 报错具体信息。
闪退但没看到日志
确认 Logcat 选对了设备和进程。崩溃后进程没了,日志可能在「No Filters」下能看到。搜 AndroidRuntime。
模拟器特别卡
- 关掉其他占内存的程序。
- 模拟器 RAM 调到 2-4GB。
- 用 x86_64 镜像不要用 arm。
- 开启硬件加速(WHPX / HAXM)。
- 实在不行用真机。
Run 按钮灰着
代码有编译错误,修掉红色报错再 Run。或者 Build -> Make Project 看具体错误。
小结
跑应用三种方式:AVD 模拟器(Device Manager 创建)、真机(开 USB 调试)、无线调试。看日志用 Logcat,按 tag/级别过滤。调试用断点 + Debug 按钮,配合 Step Over/Into 和条件断点。到这里第 1 部分环境搭建结束,下一部分开始学 Kotlin 语言基础。