今天遇到Android studio打包生産版本遇到的坑。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVPVhkY1Z0VhRTOsJGcCNjYoRmMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jNwkTNxITN5AjMxQDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
代碼混淆後我設定shrinkResources true,意思就是删除apk中多餘的資源,然後就出問題了。
在我的程式中有個顯示圖檔的代碼如下:
實際上就是通過圖檔名去尋找res下的圖檔ID,然後顯示。結果圖檔硬是沒有出來。當時就蒙圈了。最後經過測試發現,如果代碼混淆後,并在gradle中設定了shrinkResources true,那麼這句話的意思就是隻有在程式中使用了R.xx.xx引用了的資源才不會被删除。因為我程式中是通過檔案名去搜尋的圖檔,沒有使用R引用,結果圖檔硬生生給我将圖檔壓縮成1個像素了。
最後解決辦法:
在raw下配置keep.xml檔案
檔案内容如下,讓混淆壓縮是忽略這幾個圖檔,就OK了