android 混淆

android 混淆对于独立开发者来,和app打包上线的人来说是一个大坑。虽然说规则其实我们不用去记住,只需要把

混淆模板复制粘贴就行(下面是模板),但是当你debug模式下没问题,release打包时候各种闪出,并且报各种类找不到时候,这时候注意了,很有可能是混淆出来了问题。顺便说一下,release出错解决办法,那就是 在androidstuoid上连接手机,选着手机,但是不选择进程。我知道很简单,但是我有一次忘了AS有这个功能,竟然

用 adb 命令去分析 运行时问题。好了。下面时 混淆模板,再下面是 2个常用问题的混淆。RXjava,这个不混淆会发现涉及到联网就闪退(看个人),曝出的问题是类找不到。 第2个是。百度地图,在倒sdk的时候把混淆忽视了,感觉不多,结果在程序初始化的时候就闪退。

还有gson和Serializable .和
// 忽略警告,否则打包可能会不成功=
-ignorewarnings

开启混淆:

在app mould 中的build.gradle中 设置 :

android {

buildTypes {

debug {

    minifyEnabled    true

    proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'

}

release {

    minifyEnabled  true

    proguardFiles   getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'

}

}

万能模板:

#-------------------------------------------基本不用动区域----------------------------------------------

-----------------------------基本 -----------------------------

指定代码的压缩级别 0 - 7(指定代码进行迭代优化的次数,在Android里面默认是5,这条指令也只有在可以优化时起作用。)

-optimizationpasses 5

混淆时不会产生形形色色的类名(混淆时不使用大小写混合类名)

-dontusemixedcaseclassnames

指定不去忽略非公共的库类(不跳过library中的非public的类)

-dontskipnonpubliclibraryclasses

指定不去忽略包可见的库类的成员

-dontskipnonpubliclibraryclassmembers

#不进行优化,建议使用此选项,

-dontoptimize

不进行预校验,Android不需要,可加快混淆速度。

-dontpreverify

屏蔽警告

-ignorewarnings

指定混淆是采用的算法,后面的参数是一个过滤器

这个过滤器是谷歌推荐的算法,一般不做更改

-optimizations !code/simplification/arithmetic,!field/,!class/merging/

保护代码中的Annotation不被混淆

-keepattributes Annotation

避免混淆泛型, 这在JSON实体映射时非常重要

-keepattributes Signature

抛出异常时保留代码行号

-keepattributes SourceFile,LineNumberTable

#优化时允许访问并修改有修饰符的类和类的成员,这可以提高优化步骤的结果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值