代碼混淆技術:android代碼混淆原理

我們述說了Apk瘦身從哪些方面入手,哪些地方值得我們去發現問題以及解決問題,這篇文章我們總結下常規性操作,包括grade打包配置。

1、資源文件優化

a、項目中可選擇對主流的dpi支持,例如我們項目目前選擇xxhdpi作為對標,對於大圖片,可以通過網絡加載方式執行。

defaultConfig {


resConfigs "zh" //表示只使用中文


resConfigs "xxhdpi" // 表示只是用xxhdpi目錄下的資源文件
}

b、項目中的圖片以及動圖採用webp格式。

Android性能優化-Apk瘦身(3)

c、對於圖片繪製功底比較的同學,可多採用svg、shape、代碼繪製、NinePatch格式(.9格式)等方式來替代圖片資源。

d、資源中盡量使用android系統本身存在的資源,例如字體(實在要用,可到網上尋找簡化版資源)

e、對於大資源採用網絡加載方式,例如視頻、音頻、大圖、gif、json文件等,當然這種情況要充分考慮網絡加載失敗的情況,免得業務受阻。

f、在我們業務中,涉及到了so庫,並且這些so庫佔比很很大,我們可以對部分so庫執行動態加載方案。

2、開啟minifyEnable

它的作用不僅僅是混淆代碼,還有壓縮優化的功能,他會遍歷所有代碼並找出沒有引用到的代碼,這些代碼不會生成在apk中,混淆的效果是使用簡短的字母替代原來的類名屬性名等,一定程度上也可以減小代碼體積。此時要注意對於不該混淆的要做keep處理,另外對於那些反射的類要做keep處理。

3、開啟shrinkResources功能

shrinkResources標識是否去除無用的resource文件,它需要配合minifyEnable使用,同樣存在反射機制引用的問題,這種情況會被誤刪。

android {
buildTypes {
release {
minifyEnable true
shrinkResources true
   }
  }
}

4、libs目錄瘦身

so文件最終會被打包到libs目錄中,我們針對libs目錄的瘦身主要是去除不必要的平台ABI的so文件,對於不重要的so庫可參考上面1方案中的f條。

defaultConfig {

ndk {

abiFilters “armeabi-v7a”, “arm64-v8a”

}

}

5、慎重選擇第三方庫

一些第三方庫他的功能很判斷,考慮問題很全面,有些開源框架他會根據功能不同提供了精簡版,有些會根據不同的平台提供了精簡版,還有根據不同的cpu架構提供了不同的精簡版,我們要根據的需求選擇不同的版本。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/226738.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 14:52
下一篇 2024-12-09 14:52

相關推薦

發表回復

登錄後才能評論