全是淚的前言
今天App線上環境跑的時候出了點問題,我debug了一下release建構環境,然後簡直了。
具體表現在:
- 代碼的有些地方打不上斷點
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SO0kTYkNDZhdTM5ITZ0UTY2I2YzYjZ0UWYzMWZ1IjYh9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
- 斷點有的執行,有的不執行,尤其是方法跳轉的地方。
解決問題隻需要改變一個屬性
如果你使用的是 Android Studio ,檢查你的 build.gradle 中要調試建構類型(buildType)中的 minifyEnabled 的值是否為true。
若為true,改為false,即可;
問題分析
問題很明顯全是 minifyEnabled 在這個屬性的鍋,但是至于為什麼這個屬性有這麼大的影響,我們還需要問自己以下問題:
1. minifyEnabled 是什麼屬性?有什麼作用
Android Studio 内部內建了 一個叫做 ProGuard 的混淆器,通過設定 ProGuard ,我們可以做兩件事情,一是混淆代碼,加大反編譯的難度保護我們的醒目,二是檢測和移除封裝應用中未使用的類、字段、方法和屬性等,壓縮代碼和資源,減少 apk 的體積。
minifyEnabled 被用來設定是否使用 ProGuard 壓縮代碼 ,true 是壓縮,false 是不壓縮。
2. minifyEnabled 的預設值是什麼?
預設是 false
3. minifyEnabled 應該什麼時候開啟?
當 minifyEnabled = true 時 , ProGuard 啟用代碼壓縮 ,在有效減少 apk 體積的同時,也會拖慢建構速度。是以我們最好是在 打包和釋出 apk 的時候使用,一般是用在 release 建構類型中。
好了,想明白,以上的問題,就知道斷點不正常的真相,就是因為代碼壓縮。至于為什麼壓縮之後斷點為什麼不正常的問題,寶寶也不知道,這個問題到此為止,以後如果有了解,回頭來補上。
晚安,世界。
歡迎關注個人微信公衆号「淺淺同學的開發筆記」,最新的部落格,好玩的事情,都會在上面分享,期待與你共同成長。