Android Studio 使用技巧

[TOC]

1.编辑器

1.1 编辑

操作名 快捷键 备注
复制行 ⌘+D
删除行 ⌘+⌫
从复制历史中粘贴 ⌘+⇧+V 设置历史记录数:<br />Maximum number of contents to keep in clipboard
(取消)缩进 (⇧+)↹
合并行 ⌘+J

1.2 编码

操作名 快捷键 备注
补全 ⌅:只补全<br />↹:补全替换<br />!:取反补全<br />.:点号补全<br />
image
(Call)代码补全 ⌃+⇧+␣ <img src="https://jaeger.itscoder.com/assets/img/studio_tips/class_name_completion.gif" style="zoom:50%" />
补全当前状态 ⌘+⇧+⌅ <img src="https://camo.githubusercontent.com/acb8bd2b87c8f6df86b998f71204290c2f22b0ae/68747470733a2f2f6a61656765722e697473636f6465722e636f6d2f6173736574732f696d672f73747564696f5f746970732f31362d636f6d706c65746573746174656d656e742e676966"/>
覆盖方法 ⌃+O Override
实现方法 ⌃+I implement
生成 ⌘+N getter/setter<br />toString<br />constructor<br />equals()/hashcode()<br />copyright
格式化代码 ⌘+⌥+L
重排代码 \color{RED}{⌘+⌥+R} 删除Resume Program 其中一个
优化引用 ⌃+⌥+O
大小写转换 ⌘+⇧+U

1.3 选择

操作名 快捷键 备注
列选择 ⌥+选择
扩大选择 ⌥+↑
缩小选择 ⌥+↓
增加选择下一个 \color{NavyBlue}{⇧+⌥+→} Add selection for next occurrence
取消选择one by one \color{NavyBlue}{⇧+⌥+←} unselect occurrence

1.4 查找/替换

操作名 快捷键 备注
查找操作 ⌘+⇧+A \color{Red}{查找所有可选的操作}
查找 ⌘+F
快速查找 选中,⌘+F
指定路径查找 ⌘+⇧+F
Next/previous查找匹配 \color{NavyBlue}{(⇧+)F3} Find Next/Previous
选中所有查找结果 \color{NavyBlue}{⌘+⇧+F3} Select all occurrences
替换 ⌘+R
指定路径替换 ⌘+⇧+R

2.导航

2.1 面板导航

操作名 快捷键 备注
打开面板(数字) ⌘+num 1:Project<br />3:Find<br />4:Run<br />5:Debug<br />6:Logcat<br />7:Structure<br />8:Hierarchy<br />9:Version Control
打开内置 Terminal \color{Red}{⌘+T} 修改 update project
打开 Gradle \color{Red}{⌘+G}
选择目标位置 \color{NavyBlue}{⌥+1} (alt + F1被系统占用:cry:)
切换器 ⌃+↹ 在已打开的 tab 和 file 间切换<br />按住⌃键,键入⌫关闭 tab / file
(隐藏工具窗口并)回到编辑器 (⇧+)⎋
最近访问文件 ⌘+E
上一个工具窗口 F12

2.2 代码导航

2.2.1 文件内跳转
操作名 快捷键 备注
向后跳一个单词 ⌥+→
向前跳一个单词 ⌥+←
跳到行首 fn+←
跳到行尾 fn+→
跳到上/下一个方法/内部类 ⌃+↑/↓ <img src="https://jaeger.itscoder.com/assets/img/studio_tips/02-move_between_methods.gif" style="zoom:50%" />
上一个光标位置 ⌘+⌥+←
上一个编辑位置 ⌘+⇧+⌫
定位到行 ⌘+L
跳转到错误代码 F2
文件结构 ⌘+F12
2.2.2 跨文件跳转
操作名 快捷键 备注
跳转到父类/父类方法 ⌘+U
跳转到声明 ⌘+B 没在声明处:跳转到声明
跳转到实现 ⌘+⌥+B 接口/抽象类/方法
跳转到相关文件 ⌘+⌃+↑ 跳转到布局与代码相关文件,Kotlin 暂时无效
2.2.2 跨文件导航
操作名 快捷键 备注
导航到文件 ⌘+⇧+O FileName:lineNum 可导航到文件内行数
导航到类 ⌘+O 同上
导航到symbol<br />(field,method,file) ⌘+⌥+O 对不知道文件名的方法和变量或者想一步到位很有效<br />(kotlin 扩展方法)

3.分析

操作名 快捷键 备注
分析面板 \color{NavyBlue}{⌥+⇧+A}
查看使用 ⌥+F7
显示使用 ⌘+⌥+F7
指定路径查看使用 ⌘+⇧+⌥+F7
高亮一切 ⌘+⇧+F7 \color{NavyBlue}{(⇧+)F4}上/下一个<br />为
查看工程内使用 ⌘+B \color{RedOrange}{当光标在声明处}
查看类型层级 ⌃+H
查看方法层级 ⌘+⇧+H
查看Context信息 ⌃+⇧+Q 深入源码不知道位置的时候
快速查看方法定义 ⌥+␣ 快速查看方法定义,不用跳转
分析数据流传入/出 Menu → Analyze → Analyze Data Flow to/from Here<br /><img src="https://jaeger.itscoder.com/assets/img/studio_tips/31-analyzedataflow.gif" style="zoom:50%" />
堆栈分析 Menu → Analyze → Analyze Stacktrace<br /><img src="https://jaeger.itscoder.com/assets/img/studio_tips/30-analyzestacktrace.gif" style="zoom:50%" />

4.运行/调试

4.1 断点

操作名 快捷键 备注
查看断点 ⌘+⇧+F8
单次断点 ⌥+鼠标左键 触发一次后删除断点
(取消)禁用断点 ⌥+鼠标左键<br />⌘+F8 在已有断点上操作,再次操作取消禁用
条件断点 条件满足时触发<br /><img src="https://jaeger.itscoder.com/assets/img/studio_tips/22-conditionalbreakpoint.gif" style="zoom:50%" />
日志断点 <img src="https://jaeger.itscoder.com/assets/img/studio_tips/23-loggingbreakpoints.gif" style="zoom:50%" />
异常断点 View BreakPoints-><br />选择 Java Exception Breakpoints-><br />add -> Java exception breakpoint
字段观察断点 在字段定义处打断点,可勾选<br />Field Initialization<br />Field access<br />Field modification<br />

4.2 执行

操作名 快捷键 备注
Attach debugger to Android Process ⌘+⇧+F8 无需重新 debug 运行
运行 Run ⌃+R
调试 Debug ⌃+D
Run 当前文件 ⌃+⇧+R Run context configuration
Debug 当前文件 ⌃+⇧+D Debug context configuration
Stop ⌘+F2
恢复执行 F9
光标返回到执行点 ⌥+F10
单步调试 F8
调试进入方法 F7 只能进入自己写的方法
强制调试进入方法 ⌥+⇧+F7 进入系统层级方法
跳出方法 ⇧+F8
debug 到光标处 ⌥+F9 "恢复执行"直到光标行<br />(光标等于一个临时断点)
丢弃当前帧(重新执行方法) \color{NavyBlue}{F10} 重新执行方法<br />\color{RedOrange}{入参保持不变}<br />\color{RedOrange}{Field 改变不会恢复}

4.3调试

操作名 快捷键 备注
设置(变量)值 F2 为变量赋值
计算表达式值 ⌥+F8
快速计算表达式值 ⌘+⌥+F8 光标放在表达式上或者选中表达式
审查 ⌥+鼠标左键<br />审查变量或代码<br />当审查表达式时≈快速计算表达式值
标记对象 给变量打 Tag,便于从多个相似对象中辨认
image
禁用全部断点 \color{NavyBlue}{F11} \color{RedOrange}{仅在 debug 过程中有效}

Debug 设置:

调试工具栏: Settings

  • Show Values Inline

选中后启动内联调试功能,允许在编辑器中观察执行过的变量的值.

  • Show Method Return Values

选中后会显示上次执行方法的返回值.

  • Sort values alphabetically

选中后窗口中的变量值按字母的顺序排列.

  • Unmute breakpoints on session finish

当一个调试会话完成后,会重新启用所有禁用的断点.搭配"禁用全部断点",达到某一次直接跳过接下来所有 Debug 的作用

5.重构

操作名 快捷键 备注
重构面板 ⌃+T 提取抽象类<br />提取接口<br />下放到子类<br />上提到父类<br />移除未使用资源
重命名 ⇧+F6
更改签名 ⌘+F6 攺变方法的名称,攺函数的可访问性<br />对参数进行添加、删除、重命名和重新排序
移动行 ⌥+⇧+↑/↓
移动代码块 ⌘+⇧+↑/↓ 选中的代码块,或者挂光标定位在头部
提取方法 ⌘+⌥+M <img src="https://jaeger.itscoder.com/assets/img/studio_tips/53-extractmethod.gif" style="zoom:50%" />
提取参数 ⌘+⌥+P <img src="https://jaeger.itscoder.com/assets/img/studio_tips/52-extractparam.gif" style="zoom:50%" />
提取变量 ⌘+⌥+V Java,按下⇧+↹选择具体类型<br />Kotlin 可勾选 Var,具体类型
提取全局变量(Field) ⌘+⌥+F kotlin 需先有variable 才能提取 Field
提取常量 ⌘+⌥+C kotlin 不可用
内置inline ⌘+⌥+N 对方法,字段,参数,变量都有效<br /><img src="https://jaeger.itscoder.com/assets/img/studio_tips/54-inline.gif" style="zoom:60%" />
移动类/静态字段/静态方法 F6 移动内部类到单独文件<br />移动单独文件类为内部类<br />移动文件到其他包
包裹代码 ⌘+⌥+T if/try/{}/()<br /><img src="https://jaeger.itscoder.com/assets/img/studio_tips/13-surround_with.gif" style="zoom:100%" />
移除代码/包裹 ⌘+⇧+⌦ <img src="https://jaeger.itscoder.com/assets/img/studio_tips/20-unwrap.gif" style="zoom:80%" />

6.版本控制

操作名 快捷键 备注
版本控制弹窗 ⌃+V <img src="https://jaeger.itscoder.com/assets/img/studio_tips/37-vcspopup.gif" style="zoom:60%" />
update project \color{RED}{⌘+⇧+T} 修改 Navigate to test
commit ⌘+K
push project ⌘+⇧+K
显示 历史 \color{NavyBlue}{⌃+⇧+H} Git show history
显示"选中"历史 \color{NavyBlue}{⌘+⌃+⇧+H} Git show history for selection
对比不同 ⌘+D 在 Local Changes 界面选中文件->⌘+D
与分支对比 右键-git-compare with branch<br /><img src="https://jaeger.itscoder.com/assets/img/studio_tips/38-comparewithbranch.gif" style="zoom:50%" />
与提交的版本对比 Git —> Compare with the Same Repository Version
还原修改 ⌘+⌥+Z

commit 设置勾选:

  • optimize imports
  • reformat code(\color{RedOrange}{多人协作需保持相同代码格式化规则})
  • rearrange code(\color{RedOrange}{多人协作需保持相同代码格式化规则})
  • perform code analysis
  • Alibaba Code Guidelines(需安装插件)

7.其他

操作名 快捷键 备注
隐藏/显示所有面板 ⌘+⇧+F12 源码查看模式
与剪贴板对比 右键-compare with clipboard<br /><img src="https://jaeger.itscoder.com/assets/img/studio_tips/34-comparewithclipboard.gif" style="zoom:70%" />

设置:

  • 右下角显示内存使用

    Appearance -> Show memory indicator

  • 显示行号

    Editor -> General -> Appearance -> Show line numbers

参考

  1. 你所不知道的Android Studio调试技巧
  2. Android Studio 小技巧/快捷键 合集
  3. Android Studio 使用艺术
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容