本文發(fā)表于KuTear's Blog,轉(zhuǎn)載請注明

by KuTear
注: keymap調(diào)為eclipse模式(File > Settings > Keymap > Eclipse)
基本的快捷鍵
搜索相關(guān)
- 函數(shù)/變量的引用(Ctrl+G)
- 字段搜索(Ctrl+H)
- 文件名搜索(類,XML) (Ctrl+Shift+R)
- 類名搜索(Ctrl+Shift+T)
- 通用搜索(文件,字段,類) (Double Shift)
- 文件內(nèi)字段搜索(Shift+f)
- 文件內(nèi)方法/變量搜索(Ctrl+O)
調(diào)試相關(guān)
- Debug模式運(yùn)行(Shift+Alt+D)
- 對已運(yùn)行程序啟用調(diào)試(默認(rèn)無,需配置)
- 執(zhí)行進(jìn)入函數(shù)內(nèi)部(F5)
- 執(zhí)行不進(jìn)入函數(shù)內(nèi)部(F6)
- 函數(shù)內(nèi)部直接跳到調(diào)用處(F7)
- 跳到下一個(gè)斷點(diǎn)(F8)
- 跳到光標(biāo)處(Ctrl+R)
- 計(jì)算值(Ctrl+U)
Android Debug
Git相關(guān)
- 添加文件追蹤(Ctrl+Alt+A) 注:同QQ截圖沖突
- Push到服務(wù)器(Ctrl+Shift+K)
其他常用快捷鍵
- 快速功能查找(Ctrl+Shitf+A)
- 快速實(shí)現(xiàn)接口(Alt+Shift+P)
- 復(fù)寫方法/構(gòu)造器/Setter And Getter等(Alt+Insert)
- 運(yùn)行程序(Shift+Alt+X)
- Android Studio全屏模式(需配置)
- 拷貝光標(biāo)所在行到下一行(Ctrl+Win+Alt+↓)
- 雙斜杠注釋(Ctrl+/)
- (/* */)注釋(Ctrl+Shilt+/)
- 快速導(dǎo)入包,實(shí)現(xiàn)接口(Alt+Enter)
- 文件/字段/方法重命名(Ctrl+Shift+R)
- 類繼承關(guān)系(F4)
- 最近打開/最近編輯(Ctrl+E/Ctrl+Shift+E)
- 關(guān)閉當(dāng)前文件/全部文件(Ctrl+F4/Ctrl+Shift+F4(Ctrl+Shift+W))
- 在引用處查看方法/類的實(shí)現(xiàn)(Ctrl+Shift+i)
- 去除無用導(dǎo)入(Ctrl+Shift+O)
- 代碼格式化(Ctrl+Alt+L/Ctrl+Shitf+F) 注:Ctrl+Alt+L與Ubuntu鎖屏鍵沖突,Ctrl+Shitf+F與一般輸入法(搜狗)的簡繁切換沖突
- 方法/字段的說明查看(Shift+Ctrl+Space/F2)
- 返回至上次瀏覽的位置(Alt+Left/Right)
- 大小寫切換(Ctrl+Shift+U)
- 硬編碼提取到資源文件(Alt+Enter)
- 類切換(Ctrl+Tab)
- {}的切換(Ctrl+[/])
快捷鍵與Live template的定制
快捷鍵設(shè)置
-
這里以前面的Android Studio全屏模式為例來說明
根據(jù)名字搜索(full screen)
添加快捷鍵,注意不要沖突
保存設(shè)置
Live template
- 自帶模板
在Eclipse編寫主函數(shù)
public static void main(String[] agrs){
...
}
的時(shí)候,我們只需要輸入main
+Enter
鍵就會生成以上代碼,因?yàn)樗褪且粋€(gè)模板,始終的都不會改變.在Android Studio/IDEA中同樣有該功能,只不過輸入的內(nèi)容有所改變.當(dāng)輸入psvm
+Enter
鍵就回生成以上代碼.
在Android Studio中還內(nèi)置了很多模板


比如
Log.X(...)
系列,findViewById(...)
,以及for(...)
等等.
- 自定義模板
下面我以Log
來做說明.
在我們的項(xiàng)目中一般不會直接使用Log
來打印日志,而是需要給它一個(gè)可控的開關(guān),在正式版中把日志信息關(guān)掉,只在開發(fā)版中打開日志.
public class JLog{
public static final boolean isDebug = true;
public static void d(String tag,Object obj){
if(isDebug){
Log.d(tag,obj==null?"Null":obj.toString());
}
}
}
新建模板

在代碼中鍵入
jlogd
+Enter
就會自動生成
JLog.d(TAG,);
自需要你添加obj
對象即可,使用模板會大量減少代碼的輸入,減少程序員的工作量.
對于上文中的TAG
對象,我習(xí)慣與在創(chuàng)建類的時(shí)候就通過模板自動生成了TAG
常量,如果你不是很習(xí)慣這種方式,可以給TAG
指定為當(dāng)前類的名字.


具體步驟如下
<video id="video" controls="" preload="none" poster="https://o4dj02fnq.qnssl.com/2016/07/17/android_studio.png">
<source id="ogv" src="https://o4dj02fnq.qnssl.com/2016/07/17/android_stdio_template_6.ogv" type="video/ogg">
</video>
具體的變量名稱可以參考Live Template Variables
調(diào)試與分析
代碼調(diào)試
啟動調(diào)試的兩種方式
- Debug模式啟動
- app啟動之后attach
日志過濾
- 等級過濾
- tag名字過濾 [系統(tǒng)日志(如Activity的啟動會有ActivityManager)]
調(diào)試
在項(xiàng)目開發(fā)過程中,服務(wù)器返回的數(shù)據(jù)可能只是一個(gè)模擬的數(shù)據(jù),它覆蓋的面有限,比如一款產(chǎn)品包含預(yù)售,在售,缺貨等等狀態(tài),但是這是服務(wù)端開發(fā)人員并沒有完成整個(gè)開發(fā),而是僅提供一個(gè)模擬的數(shù)據(jù),而且僅是在售狀態(tài).客戶端會根據(jù)狀態(tài)設(shè)置不同的展示,比如在非在售是按鈕置灰等.
這時(shí)我們就可以在調(diào)試的時(shí)候改變某些字段的值來達(dá)到覆蓋各個(gè)情形.

斷點(diǎn)類型
- 普通斷點(diǎn)
- 條件斷點(diǎn)
- 日志斷點(diǎn)
- 方法斷點(diǎn)
- 異常斷點(diǎn)

其他附帶工具的使用
Dump Java Heap
MAT
Shallow Size是對象本身占據(jù)的內(nèi)存的大小,不包含其引用的對象月腋。對于常規(guī)對象(非數(shù)組)的Shallow Size由其成員變量的數(shù)量和類型來定昼浦,而數(shù)組的ShallowSize由數(shù)組類型和數(shù)組長度來決定,它為數(shù)組元素大小的總和藻雌。
Retained Size=當(dāng)前對象大小+當(dāng)前對象可直接或間接引用到的對象的大小總和。(間接引用的含義:A->B->C,C就是間接引用) ,并且排除被GC Roots直接或者間接引用的對象
Allocation Tracking
Lint
代碼中標(biāo)黃的部分
啟動: Analyze>Inspect Code
插件推薦
ADB idea
Adds the following ADB commands to Android Studio and Intellij:
- ADB Uninstall App
- ADB Kill App
- ADB Start App
- ADB Restart App
- ADB Clear App Data
- ADB Clear App Data and Restart
提供app卸載,app數(shù)據(jù)清理,app重啟等功能,使得我們不再需要在手機(jī)上進(jìn)入app詳情頁面進(jìn)行數(shù)據(jù)清理等工作.
Android Parcelable code genertor
Plugin which generates Android Parcelable boilerplate code for you.
自動生成序列化相關(guān)函數(shù)