android代码混淆原理(代码混淆技术)

我们述说了Apk瘦身从哪些方面入手,哪些地方值得我们去发现问题以及解决问题,这篇文章我们总结下常规性操作,包括grade打包配置。

1、资源文件优化

a、项目中可选择对主流的dpi支持,例如我们项目目前选择xxhdpi作为对标,对于大图片,可以通过网络加载方式执行。

defaultConfig {


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


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

b、项目中的图片以及动图采用webp格式。

android代码混淆原理(代码混淆技术)

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架构提供了不同的精简版,我们要根据的需求选择不同的版本。

秒鲨号所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈!本站将在三个工作日内改正。
(1)

大家都在看

品牌推广 在线咨询
返回顶部