Instant Run官方文檔翻譯

原文:https://developer.android.com/studio/run/index.html#instant-run

一熟吏、Instant Run簡介和支持條件

1.簡介:

Android Studio 2.0中引入的Instant Run是Run和Debug命令的行為,可以大幅縮短應用更新的時間潭陪。盡管首次構建可能需要花費較長的時間医寿,Instant Run在向應用推送后續(xù)更新時則無需構建新的APK顿痪,因此,這樣可以更快地看到更改滔灶。

2.支持條件:
  • Debug版本
  • gradle插件版本2.0.0或更高版本
  • minSdkVersion設置為15或以上普碎,21或更高效果會更佳

二、Instant Run設置和執(zhí)行

1.設置:

Settings > Build, Execution, Deployment > Instant Run


Instant Run設置.png
2.執(zhí)行:

部署應用后录平,Run按鈕(或Debug按鈕)中會出現黃色的小閃電圖標麻车,表明Instant Run已經準備好在您下次點擊按鈕時推送更新。無需構建新的APK即可推送新的更改斗这,一些情況下动猬,應用甚至無需重啟就可以立即顯示代碼更改的效果。

3.Instant Run推送更新的類型:

Instant Run通過執(zhí)行熱交換表箭、溫和交換冷交換向連接的設備或模擬器推送更新的代碼和資源赁咙。它會根據所做更改的類型自動確定要執(zhí)行的交換類型。

不同修改類型執(zhí)行的交換類型:

1>.更改現有方法的實現代碼

通過熱交換支持免钻,這是最快的交換類型彼水,使更改能夠更快地顯示。
熱交換不會重新初始化正在運行的應用中的對象极舔。您需要重新啟動當前的Activity凤覆,或者重新啟動應用才能看到特定更新。默認情況下拆魏,Android Studio在執(zhí)行熱交換后會自動restart activity盯桦。如果不想重新啟動,可以在上圖的Instant Run設置中停用自動行為重新啟動渤刃。

2>.更改或移除現有資源

通過溫和交換支持拥峦,這種交換速度也非常快卖子,但Instant Run在將更改的資源推送至應用時必須restart activity略号。應用保持運行,Activity重新啟動時屏幕上會出現小閃爍洋闽,這是正常情況璃哟。

3>.結構性修改代碼

結構性修改代碼,比如添加喊递、移除或更改(注釋随闪、字段),更改實現的界面列表骚勘,更改類的靜態(tài)初始值設定項铐伴,更改當前類從其繼承的父類
對于API級別21或更高版本的目標設備撮奏,通過冷交換支持,這種交換速度有點慢当宴,因為盡管不需要新的 APK畜吊,Instant Run在推送結構性的代碼更改時必須重新啟動整個應用。
對于運行API級別20或更低的目標設備户矢,Android Studio會部署完整的APK玲献。

4>.更改應用清單文件、更改清單文件引用的資源梯浪、更改Android小部件UI元素

對應用的清單或清單引用的資源進行更改時捌年,Android Studio會自動部署新構建以應用這些更改。這是因為設備上安裝了APK時應用相關的特定信息(如它的名稱挂洛、應用圖標資源和Intent過濾器)均通過清單確定礼预。
更新 Android小部件UI元素時,您需要執(zhí)行重新運行虏劲。

備注:如果您需要在崩潰后重新啟動應用托酸,請不要從目標設備啟動應用。從目標設備重啟應用將不會應用自上次冷交換或增量構建之后的任何代碼更改柒巫。要啟動應用并應用所有最近的更改励堡,請在 Android Studio 中點擊Run或Debug。

4.使用重新運行:

推送影響特定初始值設定項的代碼更改(例如對應用的onCreate()方法的更改)時堡掏,您需要重新啟動應用念秧,以便使更改生效。要執(zhí)行增量構建并重新啟動應用布疼,請點擊Rerun。
如果您需要部署整潔的構建币狠,請從主菜單中選擇Run>Clean and Rerun游两,也可以在點擊Rerun時按住Shift鍵。此操作會停止運行的應用漩绵,執(zhí)行完整贱案、整潔的構建,然后將新的APK部署至您的目標設備止吐。

三、針對Instant Run配置和優(yōu)化項目

1.通過配置DEX資源縮短構建時間

maxProcessCount瘩燥,設置可以并行啟動的 DEX 進程的最大數量不同。
javaMaxHeapSize溶耘,設置dex操作的最大內存分配池大小凳兵。

android {
  ...
  dexOptions {
    maxProcessCount 4 // this is the default value
    javaMaxHeapSize "2g"
  }
}

進行設置時企软,需要增大設置的值并觀察對構建時間產生的影響仗哨,對這些設置進行測試。如果您向dexing 進程分配過多的資源藻治,則可能導致性能下降桩卵。

2.啟用 dexing-in-process和增量Java編譯

gradle插件2.1.0及以上版本才支持dexing-in-process和增量Java編譯。
增量Java編譯默認情況下處于啟用狀態(tài)胜嗓,這種編譯方式僅對發(fā)生變化或需要重新編譯的源代碼部分進行重新編譯钩乍,可以縮短開發(fā)過程中的編譯時間。
dexing-in-process在構建流程而不是單獨的外部VM流程中執(zhí)行dexing变过。這樣不僅可以讓增量構建更快媚狰,也可以顯著提高完整構建的速度阔拳。要啟用此功能,您需要將 Gradle 后臺進程的最大堆大小設置為至少 2048 MB辨宠。要進行設置货裹,您可以將以下代碼包含到項目的gradle.properties文件中:

org.gradle.jvmargs = -Xmx2048m

如果您已經在模塊級別的build.gradle文件中為javaMaxHeapSize定義值弧圆,則需要將后臺進程的最大堆大小設置為javaMaxHeapSize的值+1024MB还最。例如拓轻,如果您已將javaMaxHeapSize設為“2g”经伙,則需要將以下代碼添加到項目的gradle.properties文件中:

org.gradle.jvmargs = -Xmx3072

四帕膜、Instant Run的限制

大多數情況下,Instant Run可以加快構建和部署流程的速度达吞。不過荒典,使用 Instant Run時有一些限制因素可能影響其行為以及應用的兼容性寺董。

1.部署到多種設備

Instant Run使用多種不同的技術執(zhí)行特定于目標設備API 級別的熱交換、溫和交換和冷交換滩字。因此御吞,同時將應用部署到多種設備時陶珠,Android Studio會暫時關閉Instant Run。

2.應用的Dalvik可執(zhí)行文件分包

如果項目面向舊版Dalvik可執(zhí)行文件分包(即背率,使用multiDexEnabled true和minSdkVersion 20或更低版本配置)配置并且您將其部署到運行Android 4.4(API 級別20)或更低版本系統(tǒng)的目標設備上寝姿,Android Studio 會停用 Instant Run饵筑。
如果將minSdkVersion設為21或更高处坪,Instant Run會自動將應用配置為進行Dalvik可執(zhí)行文件分包架专。由于Instant Run僅適用于Debug版本的應用部脚,在部署發(fā)布構建變體時裤纹,需要配置應用進行Dalvik 可執(zhí)行文件分包(在defaultConfig中配置 multiDexEnabled true)。

3.使用第三方插件

使用 Instant Run 時锡移,Android Studio 會暫時停用 Java Code Coverage Library (JaCoCo) 和 ProGuard淆珊。由于 Instant Run 僅適用于調試版本奸汇,停用不會影響您的發(fā)布版本茫蛹。

4.將更改推送至多進程應用

為了執(zhí)行熱交換和溫和交換婴洼,Instant Run 僅設置應用的主進程。將代碼更改(例如對方法實現或現有資源的更改)推送至其他應用進程時欢唾,Instant Run 會執(zhí)行冷交換粉捻。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末肩刃,一起剝皮案震驚了整個濱河市盈包,隨后出現的幾起案子呢燥,更是在濱河造成了極大的恐慌,老刑警劉巖呼渣,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屁置,死亡現場離奇詭異,居然都是意外死亡淳地,警方通過查閱死者的電腦和手機帅容,發(fā)現死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門遣钳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人麦乞,你說我怎么就攤上這事姐直∩罚” “怎么了插龄?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵糠雨,是天一觀的道長甘邀。 經常有香客問我,道長垮庐,這世上最難降的妖魔是什么测摔? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任锋八,我火速辦了婚禮,結果婚禮上挟纱,老公的妹妹穿的比我還像新娘。我一直安慰自己腐宋,他們只是感情好紊服,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胸竞,像睡著了一般欺嗤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上卫枝,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天煎饼,我揣著相機與錄音,去河邊找鬼校赤。 笑死吆玖,一個胖子當著我的面吹牛,可吹牛的內容都是我干的马篮。 我是一名探鬼主播沾乘,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了怎顾?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤崇摄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后汹粤,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年斯嚎,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡壤躲,死狀恐怖,靈堂內的尸體忽然破棺而出客税,到底是詐尸還是另有隱情捏膨,我是刑警寧澤疙描,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布巫延,位于F島的核電站,受9級特大地震影響疼阔,放射性物質發(fā)生泄漏淘邻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一帆离、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧囱修,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宇立,卻和暖如春匿级,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背痘绎。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工津函, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留尔苦,地道東北人稠项。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓蔗候,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,322評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現睹酌,斷路器权谁,智...
    卡卡羅2017閱讀 134,715評論 18 139
  • 文章摘要1旺芽、 選擇和構建不同的模塊2、更改運行/調試配置3辐啄、更改構建變體4采章、監(jiān)控構建流程5、關于 Instant ...
    Android那些事兒閱讀 1,399評論 0 50
  • 壶辜,但是有些小地方他又不給你很清楚的說明悯舟。 要獲得異步,加@Async即可 如果要配置連接池砸民,在applicatio...
    墻邊的凳子閱讀 1,316評論 0 4
  • 見與不見图谷,思念一直在翩活;愛與不愛,心一直在便贵。滾滾紅塵菠镇,一個轉身就是陌路天涯;虛擬網絡承璃,一個刪除就是再無交集利耍。相遇靠緣...
    愛你的娜一顆心閱讀 210評論 0 0