我们可以缩小所有的类,但只混淆一些与保护



通常,使用-keep排除类可以防止类被混淆

然而,它也阻止了它被收缩。

是否有可能定义一个proguard-project.txt,它将收缩所有类,除了那些被-keep排除在外的类,但也只混淆类的一个特定子集?

目的是使用proguard来保持低于android 65k方法限制,同时也只在APK中混淆第一方代码。

谢谢

是的,您可以将修饰符allowshrinking添加到-keep选项中,这些选项应该只适用于混淆(和优化)步骤。例如:

-keep,allowshrinking class com.example.SomeClass

如果指定的类在收缩步骤中未使用,则可以将其删除,否则,其名称将保留在混淆步骤中。

Eric的回答很好,还有另一种方法。

首先,有一个简写:

-keep,allowshrinking

你可以使用:

-keepnames

你也可以用相反的方式:

-keepnames class !com.example.apackage.** {*;}

所以这将混淆apackage内部的所有类,而不是其他类,同时仍然允许死代码剥离所有内容。

另一个注意事项是,如果您打开了混淆,它将剥离所有元数据,如文件名和行号,这将中断调试器和堆栈跟踪。如果你想让它们工作,你可以添加这些行:

-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable

相关内容

  • 没有找到相关文章

最新更新