初识instantRun
背景
公司安卓測試機vivo z1手機 ,apk debug安裝時彈對話框“解析錯誤,解析軟件包時出問題”
1、 解決方案
1、關閉安卓studio的 instant run(如下圖 對號勾掉)
2、項目工程gradle.properties 下添加 android.injected.testOnly = false(如下圖)
初識instant run
那么這個instant run到底是啥呢???
如下圖(我關閉了instant run)
如果你需要開啟,按照背景中的步驟開啟即可(開啟后你運行app后如下圖)
1、認識
1、安卓studio2.0編譯器新添加的功能,目的是為了提高安裝apk的速度。
2、傳統情況下,我們修改程序后重新運行一次程序需要經歷 :代碼重新編譯 -> 停止程序 -> 重新安裝 -> 重新啟動 這樣一個過程,而Instant Run則嘗試只將程序變更的部分部署到手機上,盡量避免重新安裝或重新啟動程序,以此大大提升調試程序的效率。
對instant run 的了解
instant run的分類
instant run 分為三種類型(如下)
- hot swap(熱交換)
- warm swap(溫暖交換)
- cold swap(冷交換)
三種類型詳解
1、hot swap
優點:
1、hot swap是所有swap方式中效率最高的一種
2、應用程序不需要重新安裝,也不需要重啟就可以完成程序變更。
缺點:
hot swap不會對程序中的對象進行重新初始化,也就是說可能某些場景下需要重啟Activity才能看出具體的變更內容。
ps:
Android Studio對于hot swap這種情況默認是重啟Activity的,當然你也可以到設置中去改變這一默認行為,具體路徑是 Settings -> Build, Execution, Deployment -> Instant Run -> Restart activity on code changes。
適用場景:
hot swap的適用條件比較少,只有一種情況會被Android Studio視為hot swap類型,就是修改一個現有方法中的代碼(參考下面栗子)
栗子:
程序如上,我們點擊運行時:
1、log: onCreate
2、點擊按鈕彈吐司內容為:“點擊事件”
我們修改如上程序,修改吐司內容為“點擊事件,hello”然后再次點擊運行程序:
log:
2019-06-07 19:27:26.208 15069-15069/? I/aaa: onCreate:
2019-06-07 19:28:29.426 15619-15619/? I/aaa: onCreate:
吐司內容為:點擊事件hello
我們發現:
1、 onCreate 走了兩遍(其實你在instant run中關閉重啟activity就打印一次onCreate)
2、安裝速度很快(這是因為這種情況觸發hot swap)
2 warm swap
warm swap也非常快,這種swap類型同樣不需要重新安裝或重啟程序就可以完成程序變更,但是warm swap要求必須重啟Activity。你會在界面上看到屏幕很快地閃一下,同時Activity的生命周期會重新執行。
warm swap的觸發條件:
只有一種情況會被Android Studio視為warm swap類型,就是修改或刪除一個現有的資源文件(res下的資源文件發生改變)
3、cold Swap
cold swap相對而言就要更慢一些了,Android Studio會自動記錄我們項目的每次修改,然后將修改的這部分內容打成一個dex文件發送到手機上,盡管這種swap類型仍然不需要去安裝一個全新的APK,但是為了加載這個新的dex文件,整個應用程序必須進行重啟才行。另外,cold swap的工作原理是基于multidex機制來實現的,在不引入外部library的情況下,只有5.0及以上的設備才支持multidex,因此,如果你使用了5.0以下的設備,那么cold swap就無法工作了,這種情況會執行最原始的完整APK安裝過程。
觸發機制(如下很多):
添加、刪除或修改一個注解
添加、刪除或修改一個字段
添加、刪除或修改一個方法
添加一個類
修改一個類的繼承結構
修改一個類的接口實現
修改一個類的static修飾符
涉及資源文件id的改動
小結
自己動手豐衣足食 動手總結一遍就算了解了哈哈。。。。。
感謝郭神文章分享:https://blog.csdn.net/guolin_blog/article/details/51271369
總結
以上是生活随笔為你收集整理的初识instantRun的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: @Import注解
- 下一篇: 卷组删除pv_LVM 移除PV步骤