如何仅混淆少数类或单个包?

Posted

技术标签:

【中文标题】如何仅混淆少数类或单个包?【英文标题】:How to obfuscate only few class or a single package? 【发布时间】:2012-08-07 10:59:20 【问题描述】:

我不会混淆我的所有项目,而只会混淆最关键的类。 如何编写 proguard 文件以排除所有项目并仅混淆单个类或单个包?

【问题讨论】:

只混淆 1 个类/包的原因是什么?对此类/包的调用也应该被混淆! 【参考方案1】:

请在投票前阅读答案。你需要 !上课前。

看看Proguard Manual:Keep option 部分和android example。

例子:

 -keeppackagenames com.vtcmobile 
    ! com.yourpackage.CategoryParser // keep package com.vtcmobile excluded class com.vtcmobile.CategoryParser
    

编辑:使用

-keeppackagenames [package_filter] 指定不混淆给定的包名称。可选过滤器是以逗号分隔的包名称列表。包名可以 包含 ?、* 和 ** 通配符,并且它们可以前面有 ! 否定符。仅在混淆时适用。

【讨论】:

这只会保留扩展 Activity 的类并排除一个类,我的目标是排除所有项目并仅混淆一个类。 保持意味着保持不混淆

以上是关于如何仅混淆少数类或单个包?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在组件类或插件上创建十月 CMS 上的中间件?

如何仅混淆 com.foo.* 和 com.bar.* (ProGuard)?

如何使 DefaultValueHandling 仅适用于某些类或成员?

如何在少数变量中仅使用少数变量中的一个变量

将 ProGuard 设置为仅混淆我的应用程序包

Matlab如何在matlab利用plotconfusion中绘制混淆矩阵