天天看點

Android Studio-斷點調試-no executable code found at line android全是淚的前言解決問題隻需要改變一個屬性 問題分析

全是淚的前言

今天App線上環境跑的時候出了點問題,我debug了一下release建構環境,然後簡直了。

具體表現在:

  1. 代碼的有些地方打不上斷點
Android Studio-斷點調試-no executable code found at line android全是淚的前言解決問題隻需要改變一個屬性 問題分析
  1. 斷點有的執行,有的不執行,尤其是方法跳轉的地方。

解決問題隻需要改變一個屬性

如果你使用的是 Android Studio ,檢查你的 build.gradle 中要調試建構類型(buildType)中的 minifyEnabled 的值是否為true。

若為true,改為false,即可;

Android Studio-斷點調試-no executable code found at line android全是淚的前言解決問題隻需要改變一個屬性 問題分析

問題分析

問題很明顯全是 minifyEnabled 在這個屬性的鍋,但是至于為什麼這個屬性有這麼大的影響,我們還需要問自己以下問題:

1. minifyEnabled 是什麼屬性?有什麼作用

Android Studio 内部內建了 一個叫做 ProGuard 的混淆器,通過設定 ProGuard ,我們可以做兩件事情,一是混淆代碼,加大反編譯的難度保護我們的醒目,二是檢測和移除封裝應用中未使用的類、字段、方法和屬性等,壓縮代碼和資源,減少 apk 的體積。

minifyEnabled 被用來設定是否使用 ProGuard 壓縮代碼 ,true 是壓縮,false 是不壓縮。

2. minifyEnabled 的預設值是什麼?

預設是 false

3. minifyEnabled 應該什麼時候開啟?

當 minifyEnabled = true 時 , ProGuard 啟用代碼壓縮 ,在有效減少 apk 體積的同時,也會拖慢建構速度。是以我們最好是在 打包和釋出 apk 的時候使用,一般是用在 release 建構類型中。

好了,想明白,以上的問題,就知道斷點不正常的真相,就是因為代碼壓縮。至于為什麼壓縮之後斷點為什麼不正常的問題,寶寶也不知道,這個問題到此為止,以後如果有了解,回頭來補上。

晚安,世界。

歡迎關注個人微信公衆号「淺淺同學的開發筆記」,最新的部落格,好玩的事情,都會在上面分享,期待與你共同成長。

Android Studio-斷點調試-no executable code found at line android全是淚的前言解決問題隻需要改變一個屬性 問題分析