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

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

1、资源文件优化

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

defaultConfig { resConfigs "zh" //表示只使用中文 resConfigs "xxhdpi" // 表示只是用xxhdpi目录下的资源文件 }

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

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

发布于 2022-02-24 23:25:45
收藏
分享
海报
0 条评论
23
上一篇:手机免费制作ppt的软件推荐(ppt导出pdf的大小设置) 下一篇:玩英雄联盟必备的软件推荐(英雄联盟软件叫什么)
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码