Android 代码混淆

一、 代码混淆

什么是代码混淆? 是用于压缩 优化我们的代码 主要作用是移除我们代码中无用的字段 方法名 类还有属性
为什么要代码混淆?
因为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的体积

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值