android 混淆

Android 混淆对于开发者来说是个挑战,混淆时可能会遇到各种问题导致应用崩溃。本文提供了一份详细的混淆模板,包括基本配置、默认保留、其他设置和第三方库的处理。模板中包含了对Activity、Service等关键类的保留,以及对RXJava和百度地图SDK的混淆处理,以防止运行时错误。混淆还能删除Log相关代码和保留测试代码。混淆过程中要注意忽略警告,否则可能导致打包失败。
摘要由CSDN通过智能技术生成

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值