(1 條消息)Android studio的坑你踩了多少個了?

一個是近幾天被Android studio快坑死了,另外也過來看看是Android studio的鍋還是只是我不會。

第一,build的速度,聽說2.0快了很多,然而,個人體驗依舊很慢,依舊是hard day,還不包括由於牆導致的無法build問題(這個也是坑了好多次後才會的)

第二,模擬器的速度,Google號稱提速50倍,但是實際體驗感覺依舊被genymotion完爆,是比以前的好了,但是用的時候現在會卡頓不知道是咋回事,genymotion以前就都不會,是不是又該裝回genymotion了。

第三,logcat顯示問號。經常logcat的包名顯示是問號,有啥困擾的就不說了,按照網上的什麼enable adb那個的,但是有時可以有時不行,不行的時候真心想砸電腦(好像不關電腦啥事)

第三,代碼沒反應,有時候,修改了代碼,但是執行了還是原來的。剛開始也是被坑的不行,以為自己代碼錯了,後來通過toast和logcat才了解是之前的代碼,(吐槽下,用chrome也會,但是那是緩存,清除下就行了),雖然我可以clean就行,但是,每次都clean的話,有點過分了吧,更何況build還那麼慢。而且,我最糟糕的一次是clean還不行,還rebuild,也不行(當然,前提是關閉了程序的了)然後裝我新手機上了,還不行,最終在模擬器,把原來的卸載,加上之前的clean rebuild才行。如果是緩存,請告訴我在哪,咋設置。

第四,還是logcat,顯示長度受限。「多虧」了後台伺服器太過「勤快」,我就申請一條詳情數據,拋給我幾千長度的json字元串,一般json都是放小工具格式化下,才好分析的,所以,我暫時的處理是拆成兩段輸出。個人感覺是可以設置的,求告知。

第四,模擬器,剛被坑的,已經被坑得不行不行的了,程序強退,然後,習慣性的看logcat,然而,並沒毛輸出,我以為看錯了,繼續運行,繼續沒輸出。我以為是某個比較奇葩的錯誤才不會拋出的。能想像我在漫天的代碼一步一步調試,然後在內部代碼里的一句int nend=end;//此處end為14,然後到這一步,跳不下去了,直接跳到其他地方去了,直接傻眼了。最後,通過一句設置view為空,然後調用他的方法,發現沒拋出異常才確認是logcat掛了,然後,到底是Android studio的問題或者其他依舊不知道,重啟了n遍電腦,差點沒重裝電腦,重裝studio的時候,常識性的裝在真機,才發現logcat可以了,然後,我把之前的模擬器關了,開其他模擬器,問題解決。

第五,提示你資源重複,其實有時候並沒有,有時候要clean,rebuild挺多遍的才好,不過這點相對好點,至少你知道有問題。

補充:

回去換回genymotion,感覺,這個話題可以改成android自帶模擬器的坑了。換回genymotion,build基本就很快了,幾百ms正常,logcat顯示問題,最後應該可以確定是在紅米note2上(還會無緣無故多好多的調試信息),代碼沒反應的,genymotion好像還真沒遇到過,顯示長度受限的,雖然沒解決,但是速度快了,每次打斷點,debug一下,要殺信息沒有的,而且還更多,都不用log信息了。(發誓再也不用android 自帶的模擬器了。。T_T)


關於第一點。

主要是gradle的問題,掛代-理就快了,而且Android studio的代-理(可以影響到內置的git)和gradle的代-理是獨立的哦,gradle代-理需要在gradle.properties裡面單獨設置。(最穩妥的辦法)

那麼可不可以不用代-理呢?也是可以的:

1、gradle-wrapper.properties裡面將路徑指向本地已經下載好的gradle的zip,比如windows下distributionUrl=file:///C:/Users/xxx/gradle-3.5-all.zip

2、在Android studio設置裡面把gradle的路徑設置死

3、在build.gradle中,將jcenter()替換成maven { url http://maven.aliyun.com/nexus/content/groups/public/ } ,使用阿里的源。

這樣你的每次的編譯速度就會很快了,而且在C:Usersxxx.gradlewrapperdists下面也不會有隨機名字的文件夾出現了。

不要用Offline work哦,新的gradle插件會無法下載的。

關於第二點。

需要用到intel haxm,需要bios裡面開啟支持,而且要在sdk manager裡面下載安裝

和每個Android版本的x86鏡像。不過,還是真機好用(手動滑稽)

補充一點

關於sdk manager,在設置裡面將代-理設置成http://g.cn:80,下載速度飛起哦,比其他的國內開源鏡像不知道高到哪裡去了。

補充一點2

發現gradle編譯卡住了,我想修改gradle設置怎麼辦?Android studio裡面停止build的叉叉好像點了沒反應,那麼怎麼強制停止build呢?

打開任務管理器,按佔用內存排序,前幾名應該有一到多個java進程,將它強行結束,Android studio的build就停止了,然後就可以重新修改gradle設置,然後重新編譯了。


有時候,clean 或者重啟一下,比什麼都好使。


首先,build不是Android Studio負責而是gradle負責。

然後我補充一個,project structure改依賴時,Kotlin對應的那三行每次都會被搞成一行,然後立即build fail。

Fuck Android Studio


本文羅列出了Android Studio有用的提示、技巧、快捷方式和參考資源,提高整體效率和操作性能。

顯然,還有很多優化、快捷方式,但為了保持這篇文章的簡短,限制為50個。

本文以MacOS X操作Android Studio為例,與Windows / Linux不一致的地方已經標註。

一、可視化

1、Android
Logcat的材料顏色主題(Material Colors theme)

要更改Android Studio Logcat,您需要依次點擊:Preferences → Editor → Colors
Fonts → Android Logcat,然後更改每種類型日誌的前景顏色。

注意,此處Perferences在Windows / Linux 是Settings。

2、防止Android Studio Logcat崩潰,應清除當前應用程序的日誌。

要做到這一點,您需要到Android Monitor面板在右側下拉列表中選擇Edit filter configuration。

3、將您的IDE(IntelliJ / Android Studio)應用正確的代碼樣式。

依次點擊Preferences → Code Style → Java,在Scheme下拉列表中選擇您的代碼樣式(或設置一個新的代碼樣式)。

有2款風格特別值得一提:

Square Java Code Styles with Android

Google Java Code Style

4. 使用分屏可提高效率。

要打開此功能,需要在主屏幕的選項卡上單擊滑鼠右鍵,然後選擇Split Vertically / Horizontally 。

但為了儘可能高效,我們需要設置一個自定義鍵盤的快捷方式。要做到這一點,依次點擊Preferences → Keymap 並找到Split Vertically。然後打開上下文菜單並單擊 Add Keyboard Shortcut。

5、無干擾模式(Distraction Free Mode)

可以依次點擊: View → Enter Distraction Free Mode來開啟無干擾模式。

在無干擾模式下,編輯器佔用整個IntelliJ IDEA框架,而沒有任何編輯器選項卡和工具按鈕,代碼按中心對齊。[IntelliJ
Idea查看模式]

6. 使用活動模板

可以使用快捷方式:cmd + j(Windows / Linux:ctrl + j)。

可以使用許多已定義的模板,像Toasts 或if條件。

可以使用自己的自定義模板。

還可以參考IntelliJ IDEA文檔。

二、快捷方式和有用的命令

1.最好的、最有用的命令是Search for command:

cmd + shift + a (Windows / Linux:ctrl +
shift + a)。

當你想關閉當前選項卡,不知道該怎麼辦時,只需鍵入:close你會得到一個正確的快捷方式/命令。

2.從最近的複製/粘貼中選擇(管理剪貼簿):

cmd + shift + v(Windows / Linux:ctrl + shift
+ v)。

默認情況下,最後有5個複製/粘貼項目。

剪貼板堆棧的深度在「設置」對話框的「編輯器」頁面的「限制」部分中配置。超過指定的數量時,將從列表中刪除最早的條目。 [在IntelliJ IDEA中剪切,複製和粘貼]

3.啟用多游標(multicursor)功能:

control + g(Windows / Linux:alt + j)。

有關此功能的詳細文章由Bartek Lipinski在Medium網站提供。強烈推薦!

4.Open a class:

cmd + o (Windows / Linux:ctrl + n)。

5.Open any file:

cmd + shift + o (Windows / Linux:ctrl +
shift + n)。

6.Open symbol :

cmd + option + o (Windows / Linux:alt +
shift + n)。

7.Go to implementation:

cmd + option + b (Windows / Linux:ctrl + alt
+ b)。

假設有一個界面,通過單擊介面的名稱,然後單擊Go to implementation的快捷方式,將被重定向到實現該介面的類。

8.Go to declaration:

cmd + b (Windows / Linux:ctrl + b)。

它允許快速檢查並轉到類、方法或變數的聲明。

9.Go to type declaration:

control + shift + b(Windows / Linux:ctrl +
shift + b)。

假設如此定義:

Employee employee = new Employee(「Michal」);

當你插入符號employee並單擊快捷方式時,將會被重定向到Employee類。

10.Go to super:

cmd + u(Windows / Linux:ctrl + u)。

例如,重寫一些方法。當你在方法名稱插入符號,並單擊轉到Go to super快捷方式,將被重定向到父方法。

11.Move between tabs:

cmd + shift + [ 或 cmd + shift + ] (Windows /
Linux:alt + ← / →)。

12.Move between Design /
Text tabs in layout
』s view:

control + shift + ← / →(Windows / Linux:alt + shift + ← / →)。

13.Close a current tab:

cmd + w(Windows / Linux:ctrl + shift + a)。

14.Hide all windows:

cmd + shift + F12 (Windows /
Linux:ctrl + shift + F12)。

15.Minimize Android Studio
instance:

cmd + m(Windows / Linux:ctrl + m)。

16.Format your code:

cmd + option + l (Windows / Linux:ctrl + alt
+ l)。

17.Auto-indent lines:

control + option + i (Windows / Linux:ctrl +
alt + i)。

18.Implement methods:

control + i (Windows / Linux:ctrl + i)。

假設實現了一個介面,然後只需單擊此快捷方式,即可快速導入該界面提供的所有方法。

19.Smart code completion(按期望類型過濾方法和變數的列表):

control + shift + space (Windows / Linux:ctrl
+ shift + space)。

20.Find:

cmd + f(Windows / Linux: ctrl + f)。

21.Find and replace:

cmd + r(Windows / Linux: ctrl + r)。

22.Move hardcoded strings
to resources:

option + return (Windows / Linux: alt +
enter)。

當在文本上使用插入符號時,必須使用快捷方式。

如果在全局使用該快捷方式,IDE將執行Project快速修復(Project
quick fix)(顯示意圖操作和快速修復)。

23.Build and run:

control + r (Windows / Linux: shift + F10)。

三、插件

Key promoter——幫助您更頻繁地使用鍵盤的插件。

String Manipulation——一個為文本操作提供操作的插件(例如,切換樣式,如camelCase、連字元-小寫等、大寫文本等還有很多)。

Android Material Design
Icon Generator
——此插件可幫助您將Material Design圖標設置為Android項目。安裝後,您可以使用快捷方式:cmd + shift + m以生成圖標(默認)。

ButterKnifeZelezny——一個簡單的插件,允許一鍵點擊創建Butterknife視圖注入。

IntelliJ/Android Studio
Plugin for Android Parcelable boilerplate code generation
——一個基於類中的欄位生成Android Parcelable實現的插件。

ADB Idea——一個幫助和自動執行adb命令的插件:卸載、殺死、啟動、重新啟動、清除應用程序和清除應用程序數據並重新啟動它。

Genymotion plugin——此插件允許您從Android
Studio創建和啟動Genymotion虛擬設備。

Android Methods Count——一個解析您的Android庫所依賴的插件,並顯示方法計數作為方便的提示。

Git Flow Integration——一個用於引入Git
Flow分支模型的插件。

Builder plugin——一個插件(從Square)生成一個類的靜態嵌套Builder。

四、資源

Philippe Breault

《當代Android Studio秘訣》

《鍵盤快捷方式參考》

Reto Meier

《在Android Studio中你可能不知道能做的十件事》

Hadi Hariri

《無滑鼠驅策開發》

Philippe Breault:

《像老闆一樣的Android Studio》

《Android Studio 專家 (Android 開發峰會 2015)》

Michael Evans

《Android Studio 秘訣和技巧》

《遇見Android Studio》

Donn Felker

《Android Studio——秘訣和技巧》

《用Android Studio調試你的App》

________________________________

以上內容參考開源中國社區(http://oschina.net):

Android 開發人員必知的50個秘訣、技巧和資源

另,最近開源中國旗下碼雲團隊招聘開始啦。

如果你是銷售精英,年薪點開下面鏈接看,小開怎麼會在知乎談錢【傲嬌臉】。

詳情打開:恆拓開源北京總部_職位搜索_智聯招聘


1.確實快了。有了部分編譯機制,改動小的時候秒開。

2.模擬器你沒有配置好,但是還是建議用真機測試。

3.你寫了兩個第三,我都沒遇到過。

4.四和五都沒遇到過,也沒法想像你說的意思。


Cannot resolve R symbol


geny時常黑屏

abd.exe會佔用5037埠

還有

Unfotunately,xxx has stopped?╰ひ╯


5037埠會被genymotion佔用。

但是abd.exe也需要這個埠。

所以在先打開genymotion條件下,經常報錯abd停止工作。

後來學會先開studio,再開genymotion。

完美解決。


1、如果你一次構建的速度有嚴重問題,那應該學習增量構建。

2、用模擬器開發,極少數吧?


目前就我使用的情況來看,模擬器卡頓是因為內存爆掉,一般不會出現logcat沒有輸出,即使不用instant run也差不多10秒內編譯好,版本2.3.3,最後我想說你可以升級到3.0試試。


全都是坑,最大的坑就是版本同別人項目沒法用,二就是長城那個逼死人補償命的牆,渣一般的網,三就是個人原因,電腦快捷鍵衝突,至今沒完全解決,四就是日誌,感覺比以前更難看了。來不來就是下東西。心酸史你懂的。


logcat沒有輸出我也經常遇到,求解


你寫的兩個 第三我也遇到了,AS 2.0 求解決方案。


推薦閱讀:

這種ui誰能給點思路?
如何優雅地使用Android Studio?
Android Studio如何有步驟地解決衝突問題?
okhttp,retrofit,android-async-http,volley應該選擇哪一個?

TAG:Android工程師 | AndroidStudio |