以往的Android開發有一個頭疼的且拖慢速度的問題,就是你每改一行代碼要想看到結果必需要編譯運行到手機或者模擬器上,並且須要從頭(多是登陸界面)一直點擊到你修改的界面爲止。開發一個完整的Android App你可能要經歷無數個重複編譯運行的過程,嚴重的拖慢了開發進度。html
最近React Native for Android可謂是解決了這個問題,修改代碼能夠直接在模擬其上刷新出來當前修改的界面(畢竟是用web技術)。因而乎Google能看得下去讓FB佔領本身的開發領域嗎?不可能!linux
即時運行:更快的構建和部署android
終於如今Android Studio 2 Preview推出了,其中一個革命性的功能就是Instant Run(即時運行)!新的即時運行功能可讓開發者像寫html網頁同樣寫Android原生代碼,能作到一邊修改代碼,一邊在模擬器或者實際設備上看到修改代碼後的結果。ios
下面是幾個平臺上的下載地址,下載後直接解壓進入bin文件夾就能夠運行(建議保留以前Android Studio1.4或者1.5的版本不要刪除),同時它會自動import老版本的項目和設置信息。web
Windows: https://dl.google.com/dl/android/studio/ide-zips/2.0.0.0/android-studio-ide-143.2443734-windows.zip (320 MB)windows
Mac: https://dl.google.com/dl/android/studio/ide-zips/2.0.0.0/android-studio-ide-143.2443734-mac.zip (319 MB)android-studio
Linux: https://dl.google.com/dl/android/studio/ide-zips/2.0.0.0/android-studio-ide-143.2443734-linux.zip (318 MB)app
實際項目評測ide
這裏我將用Android Studio 2.0 配合 Genymotion模擬器實際演示一個項目
佈局
進入Android Studio2.0打開項目後依次進入Setting->Build,Execution,Deployment->Instant Run查看即時運行的設置項目,你可能會發現勾選項目是灰色的,如圖
這個是由於你的project gradle是舊的,點擊下Update Project稍等片刻就好。
更新我發現Project gragle的依賴:
dependencies { classpath 'com.android.tools.build:gradle:1.2.3' }
被更新成了:
dependencies { classpath 'com.android.tools.build:gradle:2.0.0-alpha1' }
這個時候再次打開Instant Run的設置會發現已經能夠勾選了,請保持如圖的勾選:
此時咱們觀察運行按鈕的左側多了一個相似於「閃電」的標誌:
咱們的項目中有這樣的一個頁面:
準備把臨時拜訪換成別的字串好比「你好」,同時換掉左邊的Icon。它是一個擁有自定義屬性的自定義控件,佈局代碼片斷爲:
<com.qianmi.shine.widget.CommonLeftIconRightButtonRelativeLayout android:id="@+id/ll_sudden_visit" android:layout_width="match_parent" android:layout_height="wrap_content" app:CLIRBRIconId="@drawable/icon_temp" app:CLIRBRTitleName="@string/sudden_visit" app:CLIRBRActionIconId="@drawable/btn_go_nor" />
首先咱們須要先跑一下這個項目,而後先點擊界面直到上述的界面爲止停住不動,這個時候咱們再修改上述代碼(這一步是必須的,否則的Instant Run功能使用時會出現問題,致使從新運行)
這個時候咱們讓模擬器保持在這個頁面上,同時修改佈局代碼成:
<com.qianmi.shine.widget.CommonLeftIconRightButtonRelativeLayout android:id="@+id/ll_sudden_visit" android:layout_width="match_parent" android:layout_height="wrap_content" app:CLIRBRIconId="@drawable/icon_resent"//修改1 app:CLIRBRTitleName="你好"//修改2 app:CLIRBRActionIconId="@drawable/btn_go_nor" />
而後點擊帶閃電的運行:
能夠看到界面快速的刷新成了:
最後說明
須要說明的是,我在使用過程當中發現,改Instant Run僅僅適用於佈局的修改。即咱們能夠把一次修改而後到運行看效果看做一個「週期」,在這個週期裏面你僅僅修改了xml佈局文件,或者說和邏輯代碼不相關的文件,那麼你點擊運行的時候纔會觸發Instant Run,不然的話,Android Studio仍是依然會從新編譯運行。
其實想一想也是合理的,好比若你修改了代碼,而該代碼剛好是當前界面的「邏輯前提」,那麼你怎麼僅僅刷當前界面就能獲得正確結果呢?
對於到底目前Instant Run支持哪些形式的代碼修改,官方有一篇文章可供參考
https://sites.google.com/a/android.com/tools/tech-docs/instant-run
Not all code changes are supported by Instant Run currently. Here is the current list of supported code change scenarios.
Code Change |
Instant Run Support |
Change instance method implementation Change static method implementation Add or remove a class |
Supported |
Add, remove, or change a string resource |
Supported but requires an Activity restart. |
Here are some code changes that Instant Run does not currently support:
Add/remove/change annotations
Add/remove/change an instance field
Add/remove/change a static field
Add/remove a static method signature
Change a static method signature
Add/remove an instance method
Change an instance method signature
Changing which parent class the current class inherits from
Change the list of implemented interfaces
Changing static initializer of a class
Over the coming months, we plan to expand the Instant Run enable more change types, and continue to make your edit, build, run cycle faster.