一、 代码混淆
什么是代码混淆? 是用于压缩 优化我们的代码 主要作用是移除我们代码中无用的字段 方法名 类还有属性
为什么要代码混淆?
因为Java是一种跨平台、解释性语言.Java源代码的信息被编写成中间的字节码存储与.class文件中.由于跨平台的需要,Java字节码中包含许多源代码的信息
如变量名、方法名以及访问的变量名称.由于字节码很容易被发编译成Java源代码,为了防止这种现象.我们可以使用Java混淆器对Java字节码进行混淆
代码混淆的作用及好处?
作用:
-
保护了我们的代码
-
减少了我们Apk的体积
好处: -
混淆后的代码很难被反编译,即使被反编译了也很难读懂真正的语义
-
混在混淆的过程中有一些影响正常运行的信息将会永远消失,使程序更难理解
-
混淆后我们的程序仍可以按照以前的指令集运行,和混淆之前的效果一样
怎么样实现代码混淆?
首先找到moudel层下的gradle将minflyEnable设置为true表示代码可以进行混淆 然后到项目级别下的混淆文件里将混淆模板加入 如果你有三方库要根据三方提供的混淆模板添加进去.什么是代码混淆? 混淆是用于压缩,优化,混淆我们的代码.主作用是移除代码中的无用类,字段,方法和属性同时可以混淆
为什么要代码混淆? 因为java是一种跨平台、解释性语言。Java源代码编写成中间的字节码存储与class文件中。
由于跨平台的需要,Java字节码中包含许多源代码信息,如变量名、方法名。且通过这次名称来访问变量和方法。
这些符号有很多信息,很容易被反编译成Java源代码.为了防止这种现象,我们可以使用Java混淆器对Java字节码进行混淆代码混淆的作用及好处?
作用
1.起到了保护代码的作用
2.精简了程序的内存大小
好处
1.混淆后的代码很难被反编译,即使被反编译了也很难看懂真正语义。
2.被混淆的代码仍照原来的档案格式和指令集 执行结果与混淆前一样。
3.混淆的不可逆性,在混淆过程中有一些影响正常运行的信息永远丢失,是程序更难理解代码混淆怎么做?
首先在 在你 module 的 build.gradle 将minifyEnabled设置为ture表示项目可以进行混淆 然后在工程目录下找到 proguard-rules.pro 文件加入混淆模板
-keep class cn.hadcn.test.* :只保持该包下的类名
-keep class cn.hadcn.test.:表示把本包和所含子包下的类名都保持
-keep class com.example.bean. { *; }:表示包名 类名 具体方法 变量命名也会被保存
二、Apk瘦身
严格来说不是对性能优化而是对我们程序体验的一种优化
可以减少我们项目的体积大小 为我们用户下载时节约时间和流量 给我们用户带来一个良好的体验
我在项目中进行apk瘦身分为
对代码混淆,减少apk的体积
使用AndroidStudio自带的inspect Code来对工程做静态代码检查 删除那些无用的代码、id以及无用的资源
在项目中能使用一套切图完成效果就使用一套切图
如果有音频文件,尽量不要采用无损的音频格式,采用opus的音频格式
如果assets文件下有文字我们可以使用FontZip来对文字进行压缩
如果有webView界面可以使用7Zip来对文件夹进行压缩
能使用.9图尽量不使用图片
使用tinyPng图片压缩工具对图片进行压缩
没有使用到三方库的能删掉就删掉 能大量减少Apk的体积