天天看點

Android studio gradle中設定shrinkResources引發的坑

今天遇到Android studio打包生産版本遇到的坑。

Android studio gradle中設定shrinkResources引發的坑

代碼混淆後我設定shrinkResources true,意思就是删除apk中多餘的資源,然後就出問題了。

在我的程式中有個顯示圖檔的代碼如下:

Android studio gradle中設定shrinkResources引發的坑

實際上就是通過圖檔名去尋找res下的圖檔ID,然後顯示。結果圖檔硬是沒有出來。當時就蒙圈了。最後經過測試發現,如果代碼混淆後,并在gradle中設定了shrinkResources true,那麼這句話的意思就是隻有在程式中使用了R.xx.xx引用了的資源才不會被删除。因為我程式中是通過檔案名去搜尋的圖檔,沒有使用R引用,結果圖檔硬生生給我将圖檔壓縮成1個像素了。

最後解決辦法:

在raw下配置keep.xml檔案

Android studio gradle中設定shrinkResources引發的坑

檔案内容如下,讓混淆壓縮是忽略這幾個圖檔,就OK了

Android studio gradle中設定shrinkResources引發的坑