1. 程式人生 > >升級gradle版本之後小米手機除錯安裝失敗

升級gradle版本之後小米手機除錯安裝失敗

轉載地址:https://zhuanlan.zhihu.com/p/25572184?utm_source=qq&utm_medium=social

昨天剛入手小米MIX,也恰好升級了AS2.3,在使用MIX除錯執行的時候,卻發現程式總是安裝不上,報錯資訊是這樣的:

點OK解除安裝之後卻又提示解除安裝失敗,然後除錯安裝就中斷了,這就很尷尬,很明顯關鍵字是

Failed to establish session

Google 搜一下,發現就算SO上面的解決辦法,也是說在開發者選項中把小米的“MIUI優化”關掉,原因未知。試了一下關掉MIUI優化確實有用,但這我就不敢關了啊,萬一發release包之後在開MIUI優化的機子上嗝屁了那我不是完蛋?

只能自己查一下問題,在安裝過程中,我發現run資訊是這樣的

換到我的Nexus 5x上安裝

一切正常


突然聯想到AS2.3升級後的新特性

構建系統:支援新的 Gradle 外掛 2.3.0 。有一些顯著的變化:

  • 預設情況下啟用 dex 檔案的使用者快取,這將加快構建

  • 非常大的專案的配置時間應該明顯更快

  • 對於即時執行,“啟動延遲”(大應用程式在啟動時停頓幾秒鐘)應該消失

  • 即時執行使用針對 Android N 的“APK拆分”,這比它用於定位較舊的平臺的類載入器技巧更可靠

我恰好把手頭上這個專案升級了gradle,於是我找了個老專案跑了一下看看

很明顯老專案並沒有這個“split-apk”的安裝過程。這是AS2.3之後的新特性。那麼基本可以確定在安裝Split APKs的時候,MIUI優化對slice apk做了什麼操作,返回了“failed to establish session”,讓IDE判斷需要解除安裝安裝,但這個時候手機上還沒有真正的apk,然後就理所當然的解除安裝失敗了。

目前向MIUI反饋還沒有什麼回覆嘛,在這個問題修復之前,升級了AS2.3的朋友們新專案要用小米手機除錯的話,可以先考慮用老專案的Gradle覆蓋一下把Gradle降級,應該不會出問題。