Android?APP瘦身shrinkResources使用問題詳解
一、背景
對于縮小APk大小,除了開啟混淆
minifyEnabled true
還有使用
shrinkResources true
說下這兩者的區(qū)別
- minifyEnabled 這個是用來開啟刪除無用代碼,比如沒有引用到的代碼
- shrinkResources 用來開啟刪除無用資源,也就是沒有被引用的文件(經(jīng)過實測是drawable,layout,實際并不是徹底刪除,而是保留文件名,但是沒有內(nèi)容,等等),但是因為需要知道是否被引用所以需要配合mififyEnable使用,只有當兩者都為true的時候才會起到真正的刪除無效代碼和無引用資源的目的
二、shrinkResources 作用
android { buildTypes { debug { minifyEnabled false shrinkResources false } release { minifyEnabled true shrinkResources true } } }
shrinkResources = true作用是刪除無用的Resource,是與minifyEnabled 一起使用,minifyEnabled =true是開啟混淆。
三、實站演練
同樣的資源代碼
1.只有minififyEnable false 或者 minififyEnable false && shrinkResources true
APK大小為1.39M
資源文件和layout都存在且是有內(nèi)容的
2.只有minifyEnable true
866K
資源文件和layout都存在且是有內(nèi)容的
3.minifyEnable true && shrinkResources true
資源文件在但是沒有內(nèi)容大小都變成67字節(jié),layout文件內(nèi)容被清空
4.minifyEnable true && shrinkResources true 在res/raw/keep.xml(避免被誤刪除)寫了配置的
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@layout/activity_four,@drawable/no_reference_but_keep"/>
沒有在配置文件中聲明保存的文件沒有內(nèi)容,聲明保存的文件有內(nèi)容(資源文件和layout文件)
注意:string.xml中沒有被引用的怎么設(shè)置都不會被刪除
可以通過gradlew clean assembleRelease - info來獲得APK縮減資源的概覽
當您壓縮資源時,Gradle Console 會顯示它從應(yīng)用軟件包中移除的資源的摘要。例如:
:android:shrinkDebugResources Removed unused resources: Binary resource data reduced from 2570KB to 1711KB: Removed 33% :android:validateDebugSigning
四、使用shrinkResources 出現(xiàn)的問題
android 使用了shrinkResources = true后,有時候會出現(xiàn)問題。 最近項目集成阿里百川的意見反饋,添加的安全圖片只是做驗證,項目里面未引用。debug模式自然是沒問題,因為shrinkResources 設(shè)置的是false,但在release 模式下,當shrinkResources = true的時候,集成的意見反饋出問題。
解決辦法
新增res/raw/keep.xml文件,在里面把需要保留的資源文件列舉出
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@drawable/yw_1222"/>
如此問題就解決了。如果項目中需要keep多個資源可以tools:keep="@drawable/a,@layout/b,@layout/c"。意思就是在混淆的時候這些。
文末
移動端產(chǎn)品功能的逐漸增加,apk包會越來越臃腫,這里面會存在大量的情況。,APP 的體積也不可避免地呈現(xiàn)上升趨勢,如果不加以重視,幾個版本迭代下來,可能你的 APP 體積會達到用戶不能忍受的程度。比如冗余的代碼、無用的資源、未合理化處理的圖片等等。 所以Android APP瘦身是開發(fā)者必學(xué)的技術(shù)之一
以上就是Android APP瘦身shrinkResources使用問題詳解的詳細內(nèi)容,更多關(guān)于Android APP瘦身shrinkResources的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android實現(xiàn)的狀態(tài)欄定制和修改方法
這篇文章主要介紹了Android實現(xiàn)的狀態(tài)欄定制和修改方法,涉及Android針對狀態(tài)欄屬性設(shè)置的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10Android如何實現(xiàn)設(shè)備的異顯功能詳解
這篇文章主要給大家介紹了關(guān)于Android如何實現(xiàn)設(shè)備的異顯功能的相關(guān)資料,這篇文章通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學(xué)習價值,需要的朋友可以參考下2022-02-02PopupWindow?RecyclerView實現(xiàn)下拉選擇Spinner示例解析
這篇文章主要介紹了PopupWindow?RecyclerView實現(xiàn)下拉選擇Spinner示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07