转载ProGuard

Posted 双木青橙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转载ProGuard相关的知识,希望对你有一定的参考价值。

目的

目的是为了将部分频繁一起调用类指定为同一个包名,目的为是减少.dex mmap的大小
依据来源是:


根据对Dex数据的观察,我们发现Dex文件中数据基本是按类名的字母顺序进行排列的,这样同样包名的类会排在一起。但在实际程序执行中,同一个package下的类并不会全部一起调用,而是和很多其他package下的类进行交互,但mmap加载了整个页面(4K),可能会有很多无用数据。为了减少这样的情况,我们在生成文件时要尽量将使用到的数据内容排布在一起。在APK的编译流程中,Proguard混淆工具正好是能够对类名进行修改的,可以根据程序运行的逻辑,将那些会互相调用的类改为同一个package名,这样就可以使它们的数据排布在一起。


实现方法

【将验证】
proGuard没有一个标准的选项来重命名包,同时保留它们简单的类名。你可以手动创建一个ProGuard mapping文件,如下所示

com.example.MyClass -> a.MyClass:
com.example.MyOtherClass -> a.MyOtherClass:

然后可以使用选项-applymapping mapping.txt 来使用这个mapping文件

参考资料

https://stackoverflow.com/questions/15780865/proguard-keep-class-name-but-change-package-name
https://mp.weixin.qq.com/s/01Abwe0p1h3WLh28Tzg_Dw

以上是关于转载ProGuard的主要内容,如果未能解决你的问题,请参考以下文章

转载ProGuard

转载ProGuard

启用 ProGuard 会导致签名 APK 生成失败?

Proguard:-keepparameternames 仅适用于某些包

使用 proguard 的 Android 混淆应用程序会不断混淆库 jar - 是吗?

构建配置 ProGuard Shrink 混淆和压缩